home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr12 / inter35a.zip / INTERRUP.C < prev    next >
Text File  |  1993-06-05  |  232KB  |  6,339 lines

  1. Interrupt List, part 3 of 9
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
  3. --------B-1600-------------------------------
  4. INT 16 - KEYBOARD - GET KEYSTROKE
  5.     AH = 00h
  6. Return: AH = BIOS scan code
  7.     AL = ASCII character
  8. Notes:    on extended keyboards, this function discards any extended keystrokes,
  9.       returning only when a non-extended keystroke is available
  10.     the BIOS scan code is usually, but not always, the same as the hardware
  11.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  12.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  13.       differs for shifted special keys.
  14. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,INT 18/AH=00h
  15. --------B-1601-------------------------------
  16. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  17.     AH = 01h
  18. Return: ZF set if no keystroke available
  19.     ZF clear if keystroke available
  20.         AH = BIOS scan code
  21.         AL = ASCII character
  22. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  23.       however, any extended keystrokes which are not compatible with 83/84-
  24.       key keyboards are removed in the process of checking whether a
  25.       non-extended keystroke is available
  26. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
  27. --------B-1602-------------------------------
  28. INT 16 - KEYBOARD - GET SHIFT FLAGS
  29.     AH = 02h
  30. Return: AL = shift flags (see below)
  31. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
  32.  
  33. Bitfields for shift flags:
  34.  bit 7    Insert active
  35.  bit 6    CapsLock active
  36.  bit 5    NumLock active
  37.  bit 4    ScrollLock active
  38.  bit 3    Alt key pressed (either Alt on 101/102-key keyboards)
  39.  bit 2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  40.  bit 1    left shift key pressed
  41.  bit 0    right shift key pressed
  42. --------B-1603-------------------------------
  43. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  44.     AH = 03h
  45.     AL = subfunction
  46.         00h set default delay and rate (PCjr and some PS/2)
  47.         01h increase delay before repeat (PCjr)
  48.         02h decrease repeat rate by factor of 2 (PCjr)
  49.         03h increase delay and decrease repeat rate (PCjr)
  50.         04h turn off typematic repeat (PCjr and some PS/2)
  51.         05h set repeat rate and delay (AT,PS)
  52.         BH = delay value (00h = 250ms to 03h = 1000ms)
  53.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  54.         06h get current typematic rate and delay (newer PS/2s)
  55.         Return: BL = repeat rate (see above)
  56.             BH = delay (see above)
  57. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  58.       supported
  59. SeeAlso: INT 16/AH=09h
  60. --------B-1604-------------------------------
  61. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  62.     AH = 04h
  63.     AL = keyclick state
  64.         00h off
  65.         01h on
  66. SeeAlso: AH=03h
  67. --------B-1605-------------------------------
  68. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  69.     AH = 05h
  70.     CH = scan code
  71.     CL = ASCII character
  72. Return: AL = 00h if successful
  73.          01h if keyboard buffer full
  74. Note:    under DESQview, the following "keystrokes" invoke the following
  75.       actions when they are read from the keyboard buffer:
  76.         38FBh or FB00h    switch to next window (only if main menu
  77.                 popped up)
  78.         38FCh or FC00h    pop up DESQview main menu
  79.         38FEh or FE00h    close the current window
  80.         38FFh or FF00h    pop up DESQview learn menu
  81. SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
  82. --------B-1605-------------------------------
  83. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  84.     AH = 05h
  85.     AL = function
  86.         01h set keyboard layout to French
  87.         02h set keyboard layout to German
  88.         03h set keyboard layout to Italian
  89.         04h set keyboard layout to Spanish
  90.         05h set keyboard layout to UK
  91.         80h check if function supported
  92.         Return: AL <> 80h if supported
  93. Return: ???
  94. Note:    called by DOS 3.2 KEYBxx.COM
  95. SeeAlso: AH=92h,AH=A2h
  96. --------B-1609-------------------------------
  97. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  98.     AH = 09h
  99. Return: AL = supported keyboard functions (see below)
  100. Note:    this function is only available if bit 6 of the second feature byte
  101.       returned by INT 15/AH=C0h is set
  102. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  103.  
  104. Bitfields for supported keyboard functions:
  105.  bit 7    reserved
  106.  bit 6    INT 16/AH=20h-22h supported (122-key keyboard support)
  107.  bit 5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  108.  bit 4    INT 16/AH=0Ah supported
  109.  bit 3    INT 16/AX=0306h supported
  110.  bit 2    INT 16/AX=0305h supported
  111.  bit 1    INT 16/AX=0304h supported
  112.  bit 0    INT 16/AX=0300h supported
  113. --------B-160A-------------------------------
  114. INT 16 - KEYBOARD - GET KEYBOARD ID
  115.     AH = 0Ah
  116. Return: BX = keyboard ID or 0000h if no keyboard attached
  117. Note:    check return value from AH=09h to determine whether this function is
  118.       supported
  119. SeeAlso: AH=09h
  120. --------B-1610-------------------------------
  121. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  122.     AH = 10h
  123. Return: AH = BIOS scan code
  124.     AL = ASCII character
  125. Notes:    if no keystroke is available, this function waits until one is placed
  126.       in the keyboard buffer
  127.     the BIOS scan code is usually, but not always, the same as the hardware
  128.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  129.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  130.       differs for shifted special keys.
  131.     unlike AH=00h, this function does not discard extended keystrokes
  132.     INT 16/AH=09h can be used to determine whether this function is
  133.       supported, but only on later model PS/2s
  134. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h
  135. --------B-1611-------------------------------
  136. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  137.     AH = 11h
  138. Return: ZF set if no keystroke available
  139.     ZF clear if keystroke available
  140.         AH = BIOS scan code
  141.         AL = ASCII character
  142. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  143.     unlike AH=01h, this function does not discard extended keystrokes
  144.     some versions of the IBM BIOS Technical Reference erroneously report
  145.       that CF is returned instead of ZF
  146.     INT 16/AH=09h can be used to determine whether this function is
  147.       supported, but only on later model PS/2s
  148. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
  149. --------B-1612-------------------------------
  150. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  151.     AH = 12h
  152. Return: AL = shift flags 1 (same as returned by AH=02h) (see below)
  153.     AH = shift flags 2 (see below)
  154. Notes:    AL bit 3 set only for left Alt key on many machines
  155.     AH bits 7 through 4 always clear on a Compaq SLT/286
  156.     INT 16/AH=09h can be used to determine whether this function is
  157.       supported, but only on later model PS/2s
  158. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
  159.  
  160. Bitfields for shift flags 1:
  161.  bit 7    Insert active
  162.  bit 6    CapsLock active
  163.  bit 5    NumLock active
  164.  bit 4    ScrollLock active
  165.  bit 3    Alt key pressed (either Alt on 101/102-key keyboards)
  166.  bit 2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  167.  bit 1    left shift key pressed
  168.  bit 0    right shift key pressed
  169.  
  170. Bitfields for shift flags 2:
  171.  bit 7    SysRq key pressed
  172.  bit 6    CapsLock pressed
  173.  bit 5    NumLock pressed
  174.  bit 4    ScrollLock pressed
  175.  bit 3    right Alt key pressed
  176.  bit 2    right Ctrl key pressed
  177.  bit 1    left Alt key pressed
  178.  bit 0    left Ctrl key pressed
  179. --------B-1620-------------------------------
  180. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  181.     AH = 20h
  182. Return:    AH = BIOS scan code (see AH=10h for details)
  183.     AL = ASCII character
  184. Note:    use AH=09h to determine whether this function is supported
  185. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  186. --------B-1621-------------------------------
  187. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  188.     AH = 21h
  189. Return:    ZF set if no keystroke available
  190.         ZF clear if keystroke available
  191.             AH = BIOS scan code
  192.             AL = ASCII character
  193. Notes:    use AH=09h to determine whether this function is supported
  194.     some versions of the IBM BIOS Technical Reference erroneously report
  195.       that CF is returned instead of ZF
  196. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  197. --------B-1622-------------------------------
  198. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  199.     AH = 22h
  200. Return: AL = shift flags 1 (see AH=12h)
  201.     AH = shift flags 2 (see AH=12h)
  202. Note:    use AH=09h to determine whether this function is supported
  203. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  204. --------U-164252-----------------------------
  205. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  206.     AX = 4252h
  207. Return: AX = 5242h if installed
  208. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of the
  209.       PC Magazine utility CAPTURE written by Tom Kihlken
  210. SeeAlso: AX=4253h,AX=4254h
  211. --------U-164253-----------------------------
  212. INT 16 - TEXTCAP 2.0 - UNINSTALL
  213.     AX = 4253h
  214. Return: AX = segment of resident code
  215. Notes:    the uninstall code does not check whether interrupt vectors have been
  216.       chained by other programs
  217.     the caller must free the main memory block (using the returned segment)
  218. SeeAlso: AX=4252h,AX=4254h
  219. --------U-164254-----------------------------
  220. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  221.     AX = 4254h
  222. Return: AX = status
  223.         4254h if screen dump will be written as soon as disk becomes idle
  224.         5442h if screen dump written
  225. SeeAlso: AX=4252h,AX=4253h
  226. --------e-164500-----------------------------
  227. INT 16 - Shamrock Software EMAIL - GET STATUS
  228.     AX = 4500h
  229.     DL = port number (01h = COM1)
  230.     ES:BX -> 13-byte buffer for ASCIZ name
  231. Return: AX = 4D00h if EMAIL installed on specified port
  232.         ES:BX -> "" if no connection
  233.           -> "*" if connection but caller has not identified name
  234.           -> name otherwise
  235.         CX = version (CH = major, CL = minor)
  236.         DL = privilege level of user (00h = guest)
  237.         DH = chosen language (00h German, 01h English)
  238. SeeAlso: AX=4501h,AX=4502h
  239. --------e-164501-----------------------------
  240. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  241.     AX = 4501h
  242.     DL = port number (01h = COM1)
  243. Return: AX = 4D00h if EMAIL installed on specified port
  244.         BX = maximum connect time in clock ticks
  245.         CX = maximum connect time for guests (without name) in clock ticks
  246.         DX = elapsed connect time of current user in clock ticks
  247. SeeAlso: AX=4500h    
  248. --------e-164502-----------------------------
  249. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  250.     AX = 4502h
  251.     DL = port number (01h = COM1)
  252. Return: AX = 4D00h if EMAIL installed on specified port
  253.         BL = current value of serial port's Line Control Register
  254.         BH = flags
  255.         bit 0: ISO code
  256.         bit 1: pause
  257.         bit 2: linefeed
  258.         bit 3: ANSI sequences
  259.         CX = selected country code (33 = France, 49 = Germany, etc)
  260.         DX = baudrate divisor (115200/DX = baudrate)
  261. SeeAlso: AX=4500h
  262. --------e-164503-----------------------------
  263. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  264.     AX = 4503h
  265.     DL = port number (01h = COM1)
  266.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  267.     ES:BX -> ASCIZ string with new user command-word
  268. Return: AX = 4D00h if EMAIL installed on specified port
  269. Notes:    a single user command (consisting of only uppercase letters and digits)
  270.       may be defined, and remains valid until it is overwritten or the
  271.       EMAIL program terminates; the user command must be activated by
  272.       calling AX=4504h at least once.
  273.     an existing command word may be redefined with this function
  274. SeeAlso: AX=4504h,AX=4505h
  275. --------e-164504-----------------------------
  276. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  277.     AX = 4504h
  278.     DL = port number (01h = COM1)
  279.     ES:BX -> 80-byte buffer for ASCIZ user input line
  280. Return: AX = 4D00h if EMAIL installed on specified port
  281.         DL = flags
  282.         bit 0: user function supported (always set)
  283.         bit 1: user entered user-function command word
  284.         if DL bit 1 set,
  285.         ES:BX buffer contains line entered by user which begins with
  286.             the defined command word and has been converted to all
  287.             caps
  288. Note:    caller must process the returned commandline and invoke AX=4505h
  289.       within five seconds with the result of that processing
  290. SeeAlso: AX=4503h,AX=4505h
  291. --------e-164505-----------------------------
  292. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  293.     AX = 4505h
  294.     DL = port number (01h = COM1)
  295.     DH = error flag
  296.         bit 3: set on error
  297.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  298. Return: AH = 4Dh if EMAIL installed on specified port
  299.     AL = status
  300.         00h successful
  301.         02h unable to perform function (timeout, prev call not complete)
  302.         other error
  303. Notes:    if the error flag in DH is set, the string is not sent and an error
  304.       message is generated instead; if this function is not called within
  305.       five seconds of AX=4504h, EMAIL automatically generates an error
  306.       message
  307.     the string is copied into an internal buffer, allowing this function's
  308.       caller to continue immediately
  309. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  310. --------e-164506-----------------------------
  311. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  312.     AX = 4506h
  313.     DL = port number (01h = COM1)
  314.     ES:BX -> 13-byte buffer for ASCIZ filename
  315. Return: AX = 4D00h if EMAIL installed on specified port
  316.         DH = Xmodem status
  317.         00h no XGET command given
  318.         01h XGET in progress
  319.         02h XGET completed successfully
  320.         ES:BX buffer filled with last filename given to XGET command
  321.         (without path)
  322. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  323.       return DH=00h
  324. SeeAlso: AX=4500h,INT 17/AX=2408h
  325. --------K-164D4F-----------------------------
  326. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  327.     AX = 4D4Fh
  328. Return: AX = 6F6Dh if installed
  329.         ES = segment of resident code
  330. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  331. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  332. --------J-165000-----------------------------
  333. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  334.     AX = 5000h
  335.     BX = country code
  336.         0001h USA (English), 0051h Japan
  337. Return: AL = status
  338.         00h successful
  339.         01h bad country code
  340.         02h other error
  341. SeeAlso: AX=5001h,INT 10/AX=5000h,INT 17/AX=5000h
  342. --------J-165001-----------------------------
  343. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  344.     AX = 5001h
  345. Return: AL = status
  346.         00h successful
  347.         BX = country code
  348.         02h error
  349. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  350. --------J-1651-------------------------------
  351. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  352.     AH = 51h
  353. Return: AL = standard shift key states (see AH=12h)
  354.     AH = Kana lock (00h off, 01h on)
  355. SeeAlso: AH=02h,AH=12h,AH=22h
  356. --------A-165500-----------------------------
  357. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  358.     AX = 5500h
  359. Return: AX = 4D53h ('MS') if keyboard TSR present
  360. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  361.       that are present through this call.
  362.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  363.       handlers; otherwise it assumes that the TSR will handle the keyboard
  364. SeeAlso: INT 1A/AX=3601h
  365. --------U-1655FF-----------------------------
  366. INT 16 - Swap Utilities - ???
  367.     AX = 55FFh
  368.     BX >= 0004h
  369.     CX = function
  370.         0000h set ??? flag
  371.         other clear ??? flag
  372. Note:    present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools 7
  373. --------U-166969BX6968-----------------------
  374. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  375.     AX = 6969h
  376.     BX = 6968h
  377. Return: resident code unhooked, but not removed from memory
  378. --------U-166969BX6969-----------------------
  379. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  380.     AX = 6969h
  381.     BX = 6969h
  382.     DX = 0000h
  383. Return: DX nonzero if installed
  384.         BX = CS of resident code
  385.         DX = PSP segment of resident code
  386.         DS:SI -> ASCIZ identification string "CPoint Talk"
  387. ----------166A6B-----------------------------
  388. INT 16 U - FastJuice - DISABLE/UNLOAD???
  389.     AX = 6A6Bh
  390. Return: ???
  391. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  392. SeeAlso: AX=7463h
  393. --------b-166F00BX0000-----------------------
  394. INT 16 - HP Vectra - ??? - INSTALLATION CHECK
  395.     AX = 6F00h
  396.     BX = 0000h
  397. Return: BX = 4850h if present
  398. Note:    called by recent MS Mouse drivers
  399. --------b-166F0D-----------------------------
  400. INT 16 - HP Vectra - ???
  401.     AX = 6F0Dh
  402.     ???
  403. Return: ???
  404. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
  405. SeeAlso: AX=6F0Eh
  406. --------b-166F0E-----------------------------
  407. INT 16 - HP Vectra - ???
  408.     AX = 6F0Eh
  409.     ???
  410. Return: ???
  411. Note:    called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
  412. SeeAlso: AX=6F0Dh
  413. --------K-1670-------------------------------
  414. INT 16 - FAKEY.COM - INSTALLATION CHECK
  415.     AH = 70h
  416. Return: AX = 1954h if installed
  417. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  418. --------K-1671-------------------------------
  419. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  420.     AH = 71h
  421.     CX = number of keystrokes
  422.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  423. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  424. SeeAlso: AH=05h,AH=72h
  425. --------K-1672-------------------------------
  426. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  427.     AH = 72h
  428. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  429. SeeAlso: AH=71h
  430. --------K-1673-------------------------------
  431. INT 16 - FAKEY.COM - PLAY TONES
  432.     AH = 73h
  433.     CX = number of tones to play
  434.     DS:SI -> array of tones (see below)
  435. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  436. SeeAlso: INT 15/AX=1019h
  437.  
  438. Format of tone array entries:
  439. Offset    Size    Description
  440.  00h    WORD    divisor for timer channel 2
  441.  02h    WORD    duration in clock ticks
  442. ----------167463-----------------------------
  443. INT 16 U - FastJuice - INSTALLATION CHECK
  444.     AX = 7463h ("tc")
  445. Return: AX = 5443h ("TC") if installed
  446. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  447. SeeAlso: AX=6A6Bh
  448. --------R-1675-------------------------------
  449. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  450.     AH = 75h
  451.     AL = number of ticks between checks for new screen changes
  452. --------R-1676-------------------------------
  453. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  454.     AH = 76h
  455.     AL = error checking type
  456.         00h none
  457.         01h fast
  458.         02h slow
  459. --------R-1677-------------------------------
  460. INT 16 - pcANYWHERE III - LOG OFF
  461.     AH = 77h
  462.     AL = mode
  463.         00h wait for another call
  464.         01h leave in Memory Resident Mode
  465.         02h leave in Automatic Mode
  466.         FFh leave in current operating mode
  467. --------U-167761-----------------------------
  468. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  469.     AX = 7761h ('wa')
  470. Return: AX = 5741h ('WA') if installed
  471. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  472. SeeAlso: INT 21/AX=7761h
  473. --------U-167788BX7789-----------------------
  474. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  475.     AX = 7788h
  476.     BX = 7789h
  477.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  478. Return: AX = 7789h if installed and signature correct
  479.     BX = 7788h
  480.     SI destroyed          
  481. --------R-1679-------------------------------
  482. INT 16 - pcANYWHERE III - CHECK STATUS
  483.     AH = 79h
  484. Return: AX = status
  485.         FFFFh if resident and active
  486.         FFFEh if resident but not active
  487.         FFFDh if in Memory Resident mode
  488.         FFFCh if in Automatic mode
  489.         other value if not resident
  490. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  491. --------R-167A-------------------------------
  492. INT 16 - pcANYWHERE III - CANCEL SESSION
  493.     AH = 7Ah
  494. --------R-167B00-----------------------------
  495. INT 16 - pcANYWHERE III - SUSPEND
  496.     AX = 7B00h
  497. SeeAlso: AH=79h,AX=7B01h
  498. --------R-167B01-----------------------------
  499. INT 16 - pcANYWHERE III - RESUME
  500.     AX = 7B01h
  501. SeeAlso: AH=79h,AX=7B00h
  502. --------R-167C-------------------------------
  503. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  504.     AH = 7Ch
  505. Return: AH = port number
  506.     AL = baud rate
  507.         00h = 50 baud
  508.         01h = 75 baud
  509.         02h = 110 baud
  510.         03h = 134.5 baud
  511.         04h = 150 baud
  512.         05h = 300 baud
  513.         06h = 600 baud
  514.         07h = 1200 baud
  515.         08h = 1800 baud
  516.         09h = 2000 baud
  517.         0Ah = 2400 baud
  518.         0Bh = 4800 baud
  519.         0Ch = 7200 baud
  520.         0Dh = 9600 baud
  521.         0Eh = 19200 baud
  522. --------R-167D-------------------------------
  523. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  524.     AH = 7Dh
  525.     AL = subfunction
  526.         00h set terminal parameters
  527.         01h get terminal parameters
  528.         02h get configuration header and terminal parameters
  529.     DS:CX -> terminal parameter block
  530. --------R-167E-------------------------------
  531. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  532.     AH = 7Eh
  533.     AL = subfunction
  534.         01h port input status
  535.         Return AX = 0 if no characer ready,
  536.                AX = 1 if character ready
  537.         02h port input character
  538.         Return AL = received character
  539.         03h port output character in CX
  540.         11h hang up phone
  541. --------R-167F-------------------------------
  542. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  543.     AH = 7Fh
  544.     AL = subfunction
  545.         00h enable remote keyboard only
  546.         01h enable host keyboard only
  547.         02h enable both keyboards
  548.         08h display top 24 lines
  549.         09h display bottom 24 lines
  550.         10h Hayes modem
  551.         11h other modem
  552.         12h direct connect
  553. --------U-1680-------------------------------
  554. INT 16 - MAKEY.COM - INSTALLATION CHECK
  555.     AH = 80h
  556. Return: AX = 1954h if installed
  557. Program: MAKEY is a utility by System Enhancement Associates
  558. --------U-168765BX4321-----------------------
  559. INT 16 - AT.COM version 8/26/87 - API
  560.     AX = 8765h
  561.     BX = 4321h
  562.     CX = ??? or FFFFh
  563.     if CX = FFFFh
  564.         DX = number of event to remove or FFFFh
  565. Return: ES:BX -> event record array
  566. Program: AT.COM is a resident scheduler by Bill Frolik
  567.  
  568. Format of event record:
  569. Offset    Size    Description
  570.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  571.  01h    BYTE    day of date on which to trigger
  572.  02h    BYTE    month of date on which to trigger
  573.  03h    BYTE    trigger time, minute
  574.  04h    BYTE    trigger time, hour
  575.  05h    WORD    offset of command to be executed
  576. ----------1692-------------------------------
  577. INT 16 - ???
  578.     AH = 92h
  579. Return: AH <= 80h if ???
  580. Note:    called by DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  581. SeeAlso: AH=05h"PCjr",AH=A2h
  582. --------U-1699-------------------------------
  583. INT 16 - SCOUT v5.4 - GET ???
  584.     AH = 99h
  585. Return: AX = ABCDh
  586.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  587. Program: Scout is a memory-resident file manager by New-Ware
  588. SeeAlso: AH=9Eh
  589. --------U-169E-------------------------------
  590. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  591.     AH = 9Eh
  592. Return: AX = ABCDh if installed
  593. Program: Scout is a memory-resident file manager by New-Ware
  594. SeeAlso: AH=99h
  595. ----------16A2-------------------------------
  596. INT 16 - ???
  597.     AH = A2h
  598. Return: AH <= 80h if ???
  599. Note:    this function is called by DOS 5+ KEYB.COM
  600. SeeAlso: AH=92h
  601. --------V-16AA-------------------------------
  602. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  603.     AH = AAh
  604.     Various registers set up by high level language.
  605. Return: Graphics performed
  606. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  607.       Modula 2 and others from DataBiten in Sweden. The library is
  608.       installed as a memory resident driver.
  609. ----------16AABBBXEEFF-----------------------
  610. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  611.     AX = AABBh
  612.     BX = EEFFh
  613. Return: AX = EEFFh if installed
  614.     BX = AABBh if installed
  615.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  616. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  617.       Co.
  618. Index:    hotkey;JORJ
  619. --------K-16CA--BX736B-----------------------
  620. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  621.     AH = CAh
  622.     BX = 736Bh ("sk")
  623.     CX = 736Bh
  624.     AL = function
  625.         00h installation check
  626.         Return: DX = words available in keyboard buffer
  627.         01h place keystroke in buffer
  628.         DX = keystroke (DH = scan code, DL = ASCII character)
  629.         Return: DX = words available in keyboard buffer
  630.                 FFFFh on error
  631.         02h flush STACKEY and BIOS keyboard buffers
  632. Return: AX = CAFFh if installed
  633.         BX = segment of resident code
  634.         CX = STACKEY version (CH = major, CL = minor)
  635. Program: STACKEY is a shareware keyboard-input faking TSR
  636. Index:    installation check;STACKEY
  637. --------V-16CA00BX6570-----------------------
  638. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  639.     AX = CA00h
  640.     BX = 6570h ("ep")
  641.     CX = 6570h
  642. Return: AX = CAFFh if installed
  643.         BX = segment of resident code
  644.         CX = ??? (0090h)
  645. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette settings
  646.       permanent across mode switches
  647. SeeAlso: AX=CA00h/BX=7670h
  648. --------V-16CA00BX7670-----------------------
  649. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  650.     AX = CA00h
  651.     BX = 7670h ("vp")
  652.     CX = 7670h
  653. Return: AX = CAFFh if installed
  654.         BX = segment of resident code
  655.         CX = ??? (0090h)
  656. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette settings
  657.       permanent across mode switches
  658. SeeAlso: AX=CA00h/BX=6570h
  659. ----------16D724CX00CB-----------------------
  660. INT 16 U - APCAL v3.20 - GET ???
  661.     AX = D724h
  662.     CX = 00CBh
  663. Return: AX = 0000h
  664.     BX = 0000h
  665.     DX:CX -> ??? or 0000h:0000h
  666. Program: APCAL is an optionally-resident shareware appointment calendar by
  667.       Gamma Software
  668. SeeAlso: AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  669. ----------16D724CX00CC-----------------------
  670. INT 16 U - APCAL v3.20 - GET ???
  671.     AX = D724h
  672.     CX = 00CCh
  673. Return: AX = 0000h
  674.     BX = 0000h
  675.     DX:CX -> ??? (apparently an internal data area)
  676. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  677. ----------16D724CX00CD-----------------------
  678. INT 16 U - APCAL v3.20 - GET ???
  679.     AX = D724h
  680.     CX = 00CDh
  681. Return: AX = ??? (5345h seen)
  682. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  683. --------t-16E0E0-----------------------------
  684. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  685.     AX = E0E0h
  686. Return: AX = 1F1Fh if installed
  687.         DWORD 0040h:00F0h -> last data block in TSR list (see AX=F0F0h)
  688. Note:    the returned TSR list provides support for communication among TSRs
  689.       built with TurboPower's Turbo Professional and Object Professional
  690.       libraries for Turbo Pascal
  691. SeeAlso: AX=F0F0h
  692. --------U-16ED--BHED-------------------------
  693. INT 16 - BORLAND TURBO LIGHTNING - API
  694.     AH = EDh
  695.     BH = EDh
  696.     BL = function
  697.         00h installation check
  698.         Return: AX = 5205h
  699.             CH = major version
  700.             CL = minor version
  701.         01h ???
  702.         02h get resident CS
  703.         Return: AX = code segment of resident portion
  704.         03h get resident ???
  705.         Return: AX = offset of some buffer in resident code seg
  706.         04h ???
  707.         05h set ???
  708.         AL = 0 to 0Ch
  709.         Return: AX = status
  710.                 0000h if OK
  711.                 0001h if out of range.
  712.         06h ???
  713.         07h ???
  714.         08h ???
  715.         AL = char???
  716.         CX = ???
  717.         DX = ???
  718.         Return: AX = 0, 1 or 2
  719.         09h ???
  720.         0Ah ???
  721.         CX = ???
  722.         DX = ???
  723.         Return: AX = ???
  724.         0Bh ???
  725.         DS:SI -> ???
  726.         Return: AX = 0, 40h, 80h
  727.         0Ch ???
  728.         DS:SI -> ???
  729.         Return: AH = 0
  730.             AL = ???
  731.         0Dh set ???
  732.         (sets an internal flag)
  733.         0Eh ???
  734.         DS:SI -> ???
  735.         Return: AX = 0, 1 or 2.
  736.         0Fh ???
  737.         10h ???
  738. Notes:    AX in general returns an error code from most functions.
  739. Index:    installation check;Turbo Lightning
  740. ----------16EF-------------------------------
  741. INT 16 - CALCULATOR - INSTALLATION CHECK
  742.     AH = EFh
  743. Return: AX = 0088h if installed
  744. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  745.       Marek Kosznik
  746. --------b-16F0-------------------------------
  747. INT 16 - Compaq 386 - SET CPU SPEED
  748.     AH = F0h
  749.     AL = speed
  750.         00h equivalent to 6 MHz 80286 (COMMON)
  751.         01h equivalent to 8 MHz 80286 (FAST)
  752.         02h full 16 MHz (HIGH)
  753.         03h toggles between 8 MHz-equivalent and speed set by system board
  754.         switch (AUTO or HIGH)
  755.         08h full 16 MHz except 8 MHz-equivalent during floppy disk access
  756.         09h specify speed directly
  757.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  758. SeeAlso: AH=F1h,AH=F3h
  759. --------t-16F0F0-----------------------------
  760. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  761.     AX = F0F0h
  762. Return: AX = 0F0Fh if installed
  763.         ES:DI -> last data block in TSR list
  764. Note:    the returned TSR list provides support for communication among TSRs
  765.       built with TurboPower's Turbo Professional and Object Professional
  766.       libraries for Turbo Pascal
  767. SeeAlso: AX=E0E0h
  768.  
  769. Format of data block:
  770. Offset    Size    Description
  771.  00h    DWORD    pointer to program tag (counted ASCII string)
  772.  04h    WORD    interface version number (0400h)
  773.  06h    DWORD    pointer to command entry point
  774.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  775.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  776. ---swappable TSRs only---
  777.  12h    DWORD    pointer to swapping data
  778.  16h    DWORD    pointer to user data
  779.     more???
  780. --------b-16F1-------------------------------
  781. INT 16 - Compaq 386 - READ CURRENT CPU SPEED
  782.     AH = F1h
  783. Return:    AL = speed code (see AH=F0h)
  784.          if AL = 09h, CX = speed code
  785. SeeAlso: AH=F0h,AH=F3h
  786. --------b-16F2-------------------------------
  787. INT 16 - Compaq 386 - DETERMINE ATTACHED KEYBOARD TYPE
  788.     AH = F2h
  789. Return: AL = type
  790.         00h if 11-bit AT keyboard is in use
  791.         01h if 9-bit PC keyboard is in use 
  792. --------b-16F3-------------------------------
  793. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  794.     AH = F3h
  795.     AL = 00h limit is 6 Mhz
  796.        = 01h limit is 8 Mhz/6 Mhz
  797. SeeAlso: AH=F0h,AH=F1h
  798. --------U-16F398-----------------------------
  799. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  800.     AX = F398h
  801. Return: AX = 6A73h ("js")
  802.     BH = scan code of current hot key
  803.     BL = ASCII code of current hot key
  804. Note:    NG.EXE was written by John Socha
  805. --------b-16F400-----------------------------
  806. INT 16 - Compaq Systempro - CACHE CONTROLLER STATUS
  807.     AX = F400h
  808. Return: AH = E2h
  809.     AL = status
  810.         00h not present
  811.         01h enabled
  812.         02h disabled
  813. SeeAlso: AX=F401h,AX=F402h
  814. --------b-16F401-----------------------------
  815. INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
  816.     AX = F401h
  817. Return: AX = E201h
  818. SeeAlso: AX=F400h,AX=F402h
  819. --------b-16F402-----------------------------
  820. INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
  821.     AX = F402h
  822. Return: AX = E202h
  823. SeeAlso: AX=F400h,AX=F401h
  824. --------v-16FA00DX5945-----------------------
  825. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK???
  826.     AX = FA00h
  827.     DX = 5945h
  828. Return: CF clear
  829.     DI = 4559h
  830.     BX = ??? (2F00h or FFFFh) (VSAFE only)
  831. SeeAlso: INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  832. --------v-16FA01DX5945-----------------------
  833. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  834.     AX = FA01h
  835.     DX = 5945h
  836. Return: CF clear if successful
  837.     DI = 4559h
  838. SeeAlso: AX=FA00h
  839. --------v-16FA02DX5945-----------------------
  840. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  841.     AX = FA02h
  842.     DX = 5945h
  843.     BL = ???
  844. Return: CF clear
  845.     DI = 4559h
  846.     CL = old value of ???
  847. --------v-16FA03DX5945-----------------------
  848. INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
  849.     AX = FA03h
  850.     DX = 5945h
  851. Return: CF clear
  852.     DI = 4559h
  853.     AX = 0002h
  854. --------v-16FA04DX5945-----------------------
  855. INT 16 U - PC Tools v8+ VSAFE - GET ???
  856.     AX = FA04h
  857.     DX = 5945h
  858. Return: CF clear
  859.     DI = 4559h
  860.     BL = ???
  861. Note:    this function is a NOP under VWATCH
  862. SeeAlso: AX=FA05h
  863. --------v-16FA05DX5945-----------------------
  864. INT 16 U - PC Tools v8+ VSAFE - SET ???
  865.     AX = FA05h
  866.     DX = 5945h
  867.     BL = ???
  868. Return: CF clear
  869.     DI = 4559h
  870. Note:    this function is a NOP under VWATCH
  871. SeeAlso: AX=FA04h
  872. --------v-16FA06DX5945-----------------------
  873. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  874.     AX = FA06h
  875.     DX = 5945h
  876. Return: CF clear
  877.     DI = 4559h
  878.     BL = ???
  879. SeeAlso: AX=FA07h
  880. --------v-16FA07DX5945-----------------------
  881. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET ???
  882.     AX = FA07h
  883.     DX = 5945h
  884.     BL = ???
  885. Return: CF clear
  886.     DI = 4559h
  887. SeeAlso: AX=FA00h,AX=FA06h
  888. --------U-16FE55-----------------------------
  889. INT 16 U - PC Tools v8+ DATAMON, DRIVEMAP, CPSCHED, CPTASK - ???
  890.     AX = FE55h
  891.     CX = ???
  892.     DX = ???
  893.     ???
  894. Return: DX:AX -> ???
  895. --------U-16FEA4-----------------------------
  896. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  897.     AX = FEA4h
  898.     ???
  899. Return: ???
  900. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  901.       code in DESKTOP
  902. SeeAlso: AX=FFA4h
  903. --------U-16FEC6-----------------------------
  904. INT 16 U - PC Tools v7+ CPSCHED - ???
  905.     AX = FEC6h
  906.     DL = ???
  907.     ???
  908. Return: ???
  909. --------U-16FED3-----------------------------
  910. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  911.     AX = FED3h
  912.     DS:SI -> 92-byte data record for ???
  913. Return: ???
  914. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  915.       code in DESKTOP
  916. SeeAlso: AX=FFD3h
  917. --------U-16FEDC-----------------------------
  918. INT 16 U - PC Tools v7+ CPSCHED - ???
  919.     AX = FEDCh
  920.     ???
  921. Return: ???
  922. --------U-16FEEFCX0000-----------------------
  923. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  924.     AX = FEEFh
  925.     CX = 0000h
  926. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  927.         BX = segment of resident portion
  928. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  929.       code in DESKTOP
  930. SeeAlso: AX=FFEFh
  931. --------U-16FEF1-----------------------------
  932. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  933.     AX = FEF1h
  934.     BX = ???
  935. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  936.     DX = 5555h
  937. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  938.       code in DESKTOP
  939. SeeAlso: AX=FFF1h
  940. --------K-16FF-------------------------------
  941. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  942.     AH = FFh
  943.     DX = scan code
  944. Return: AL = status
  945.         00h success
  946.         01h failure
  947. Program: KBUF is a keyboard buffer expander by Mark Adler
  948. SeeAlso: AH=05h
  949. --------V-16FF-------------------------------
  950. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  951.     AH = FFh
  952. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  953.     AL+1 = Zoom interrupt number
  954.     BX = hotkey
  955. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  956.       the default hot key is F10
  957.     not all vendors include the Tseng TSR which supports these functions
  958. SeeAlso: INT 60"OPTIMA"
  959. --------d-16FF70-----------------------------
  960. INT 16 U - PC Tools v8+ DRIVEMAP - API???
  961.     AX = FF70h
  962.     BX = function (0000h-0002h)
  963.     ???
  964. Return: ???
  965. BUG:    this call will branch to random locations on BX=0003h-5CD6h under v8.0
  966.       due to range-testing the wrong register
  967. SeeAlso: INT 2F/AH=92h"DRIVEMAP"
  968. --------T-16FF80-----------------------------
  969. INT 16 U - PC Tools v8+ CPTASK - API
  970.     AX = FF80h
  971.     BX = function (0000h-0009h or 4350h ['CP'])
  972.     ???
  973. Return: ???
  974. --------U-16FF90-----------------------------
  975. INT 16 U - PC Tools v8+ DESKTOP - ???
  976.     AX = FF90h
  977.     ???
  978. Return: ???
  979. Note:    available only when popped up
  980. --------U-16FF91-----------------------------
  981. INT 16 U - PC Tools v7+ DESKTOP - ???
  982.     AX = FF91h
  983.     ???
  984. Return: AX = 0000h
  985. Note:    calls AX=FFFDh after ???
  986. SeeAlso: AX=FF92h,AX=FFFDh
  987. --------U-16FF92-----------------------------
  988. INT 16 U - PC Tools v7+ DESKTOP - ???
  989.     AX = FF92h
  990.     ???
  991. Return: AX = 0000h
  992. Note:    like AX=FF91h, but temporarily sets ??? to 3
  993. SeeAlso: AX=FF91h,AX=FF92h
  994. --------U-16FF93-----------------------------
  995. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  996.     AX = FF93h
  997. --------U-16FF94-----------------------------
  998. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  999.     AX = FF94h
  1000.     CX = ??? (default 0017h)
  1001. --------U-16FF95-----------------------------
  1002. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  1003.     AX = FF95h
  1004.     BX = ???
  1005. --------U-16FF96-----------------------------
  1006. INT 16 U - PC Tools v7+ DESKTOP - ???
  1007.     AX = FF96h
  1008.     CL = ???
  1009. Return: AX = ???
  1010. --------U-16FF97-----------------------------
  1011. INT 16 U - PC Tools v7+ DESKTOP - ???
  1012.     AX = FF97h
  1013.     DS:DX -> buffer for ??? (see below)
  1014. Return: ???
  1015.  
  1016. Format of buffer:
  1017. Offset    Size    Description
  1018.  00h 48 BYTEs    ???
  1019.  30h 128 BYTEs    ???
  1020. --------U-16FF98-----------------------------
  1021. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  1022.     AX = FF98h
  1023.     DX = byte offset in file of overlay header
  1024. Return: BX = file handle for DESK.OVL file
  1025. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  1026.       overlay header, and seek to the offset specified by the header
  1027.  
  1028. Format of overlay header:
  1029. Offset    Size    Description
  1030.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  1031.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  1032. --------U-16FF99-----------------------------
  1033. INT 16 U - PC Tools v7+ DESKTOP - ???
  1034.     AX = FF99h
  1035.     ???
  1036. Return: ???
  1037. --------U-16FF9A-----------------------------
  1038. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  1039.     AX = FF9Ah
  1040. Return: ES:BX -> name of current color scheme
  1041. Note:    available even if not popped up
  1042. --------U-16FF9B-----------------------------
  1043. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  1044.     AX = FF9Bh
  1045. Return: ???
  1046. Note:    sounds triple-length beep
  1047. --------T-16FF9C-----------------------------
  1048. INT 16 U - PC Tools v8+ CPTASK - ???
  1049.     AX = FF9Ch
  1050.     BL = ??? (00h,01h)
  1051.     ???
  1052. Return: ???
  1053. Note:    sounds triple-length beep
  1054. ----------16FF9D-----------------------------
  1055. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  1056.     AX = FF9Dh
  1057.     ES:BX -> ??? word
  1058. Return: ???
  1059. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  1060.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  1061.       flag is always cleared if ES=0000h.
  1062. --------U-16FF9E-----------------------------
  1063. INT 16 U - PC Tools v7+ DESKTOP - ???
  1064.     AX = FF9Eh
  1065.     DL = ???
  1066.         bit 7: ???
  1067.         bits 6-0: function number??? (00h,01h,other)
  1068.     ???
  1069. Return: ???
  1070. --------U-16FFA1-----------------------------
  1071. INT 16 U - PC Tools v7+ DESKTOP - ???
  1072.     AX = FFA1h
  1073.     ???
  1074. Return: ???
  1075. Note:    same as AX=FFA2h, except ??? set to FFh
  1076. SeeAlso: AX=FFA2h
  1077. --------U-16FFA2-----------------------------
  1078. INT 16 U - PC Tools v7+ DESKTOP - ???
  1079.     AX = FFA2h
  1080.     ???
  1081. Return: ???
  1082. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  1083. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  1084. --------y-16FFA3BX0000-----------------------
  1085. INT 16 U - PC Tools v7+ DATAMON - INSTALLATION CHECK
  1086.     AX = FFA3h
  1087.     BX = 0000h
  1088.     CX = 0000h
  1089. Return: AX = segment of resident code
  1090.     BX = 5555h
  1091.     CX = 5555h
  1092. --------y-16FFA3BX0001-----------------------
  1093. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1094.     AX = FFA3h
  1095.     BX = 0001h
  1096.     CX = 0001h
  1097. Return: AX:BX -> ???
  1098.     CX = BX
  1099. --------y-16FFA3BX0002-----------------------
  1100. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1101.     AX = FFA3h
  1102.     BX = 0002h
  1103.     CX = 0002h
  1104. Return: AX = ??? (0 or 1)
  1105.     CX = BX = AX
  1106. --------y-16FFA3BX0003-----------------------
  1107. INT 16 U - PC Tools v7+ DATAMON - GET ???
  1108.     AX = FFA3h
  1109.     BX = 0003h
  1110.     CX = 0003h
  1111. Return: AX = ??? (0 or 1)
  1112.     CX = BX = AX
  1113. --------y-16FFA3BX0004-----------------------
  1114. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  1115.     AX = FFA3h
  1116.     BX = 0004h
  1117.     CX = 0004h
  1118. SeeAlso: AX=FFA3h/BX=0005h
  1119. --------y-16FFA3BX0005-----------------------
  1120. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  1121.     AX = FFA3h
  1122.     BX = 0005h
  1123.     CX = 0005h
  1124. SeeAlso: AX=FFA3h/BX=0004h
  1125. --------y-16FFA3BX0006-----------------------
  1126. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  1127.     AX = FFA3h
  1128.     BX = 0006h
  1129.     CX = 0006h
  1130.     DX = current PSP segment as known to DOS??? or 0000h
  1131. --------U-16FFA4-----------------------------
  1132. INT 16 U - PC Tools v7+ DESKTOP - ???
  1133.     AX = FFA4h
  1134. Return: ???
  1135. Notes:    available even when not popped up
  1136.     sets unknown flag if ??? conditions met
  1137. SeeAlso: AX=FEA4h
  1138. --------c-16FFA5CX1111-----------------------
  1139. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  1140.     AX = FFA5h
  1141.     CX = 1111h
  1142. Return: CH = 00h if installed
  1143.         ES:DI -> internal data (see below)
  1144.         CL = cache state
  1145.         01h enabled
  1146.         02h disabled
  1147. SeeAlso: INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  1148.  
  1149. Format of internal data:
  1150. Offset    Size    Description
  1151. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  1152.         each byte is either blank (20h) or drive letter (41h-54h)
  1153.  -8    BYTE    ???
  1154.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  1155.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  1156.  -3   3 BYTEs    ???
  1157. --------c-16FFA5CXAAAA-----------------------
  1158. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  1159.     AX = FFA5h
  1160.     CX = AAAAh
  1161. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  1162. SeeAlso: AX=FFA5h/CX=CCCCh
  1163. --------c-16FFA5CXCCCC-----------------------
  1164. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  1165.     AX = FFA5h
  1166.     CX = CCCCh
  1167. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  1168. Note:    delayed writes are automatically disabled on EXECing
  1169.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  1170.       however, delayed writes are not automatically reenabled upon the
  1171.       program's termination in v6.
  1172. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  1173. --------c-16FFA5CXDDDD-----------------------
  1174. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  1175.     AX = FFA5h
  1176.     CX = DDDDh
  1177. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  1178. --------c-16FFA5CXEEEE-----------------------
  1179. INT 16 - PC-Cache v6+ - ENABLE CACHE
  1180.     AX = FFA5h
  1181.     CX = EEEEh
  1182. SeeAlso: AX=FFA5h/CX=DDDDh
  1183. --------c-16FFA5CXFFFF-----------------------
  1184. INT 16 - PC-Cache v6+ - FLUSH CACHE
  1185.     AX = FFA5h
  1186.     CX = FFFFh
  1187. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  1188. --------U-16FFA6-----------------------------
  1189. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  1190.     AX = FFA6h
  1191. Return: DS:SI -> ???
  1192. Note:    available only when popped up
  1193. --------U-16FFA7-----------------------------
  1194. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ??? PATH
  1195.     AX = FFA7h
  1196. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  1197. --------U-16FFA8-----------------------------
  1198. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1199.     AX = FFA8h
  1200.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  1201.     ???
  1202. Return: ???
  1203. Notes:    available only when popped up
  1204.     strings copied into internal buffer, among other actions
  1205. --------U-16FFA9-----------------------------
  1206. INT 16 U - PC Tools v6.0+ DESKTOP API - GET VERSION STRING
  1207.     AX = FFA9h
  1208. Return: DS:SI -> version string
  1209. --------U-16FFAA-----------------------------
  1210. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1211.     AX = FFAAh
  1212.     ???
  1213. Return: ???
  1214. Note:    available only when popped up
  1215. --------U-16FFAB-----------------------------
  1216. INT 16 U - PC Tools v6.0+ DESKTOP API - GET EDITOR SETTINGS???
  1217.     AX = FFABh
  1218. Return: DS:SI -> editor setting strings???
  1219. --------U-16FFAC-----------------------------
  1220. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1221.     AX = FFACh
  1222.     DL = ???
  1223. Note:    available only when popped up
  1224. --------U-16FFAD-----------------------------
  1225. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1226.     AX = FFADh
  1227.     DL = ???
  1228. --------U-16FFAE-----------------------------
  1229. INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
  1230.     AX = FFAEh
  1231. Return: AL = ???
  1232. --------U-16FFAF-----------------------------
  1233. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1234.     AX = FFAFh
  1235.     DL = ???
  1236. --------U-16FFB0-----------------------------
  1237. INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
  1238.     AX = FFB0h
  1239.     BL = ???
  1240. --------U-16FFB1-----------------------------
  1241. INT 16 U - PC Tools v6.0+ DESKTOP API - ???
  1242.     AX = FFB1h
  1243.     ???
  1244. Return: ???
  1245. --------U-16FFB2-----------------------------
  1246. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  1247.     AX = FFB2h
  1248. Return: DS:SI -> ???
  1249. --------U-16FFB3-----------------------------
  1250. INT 16 U - PC Tools v5.5+ DESKTOP API - ???
  1251.     AX = FFB3h
  1252.     ???
  1253. Return: ???
  1254. Note:    available only when popped up
  1255. --------U-16FFB4-----------------------------
  1256. INT 16 U - PC Tools v5.5+ DESKTOP API - SET ??? FLAG
  1257.     AX = FFB4h
  1258. Note:    available only when popped up
  1259. SeeAlso: AX=FFBBh
  1260. --------U-16FFB5-----------------------------
  1261. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET WINDOW PARAMETERS
  1262.     AX = FFB5h
  1263.     BX = window specifier (000Fh to 0019h) (see below)
  1264.     DX = 0000h get, nonzero = set
  1265.     ES:DI -> window parameter buffer (see below)
  1266. SeeAlso: AX=FFCBh
  1267.  
  1268. Values for window specifier:
  1269.  000Fh    comm/FAX
  1270.  0014h    hotkey selection
  1271.  0015h    ASCII table
  1272.  0016h    system colors menu
  1273.  
  1274. Format of window parameters:
  1275. Offset    Size    Description
  1276.  00h    BYTE    rows in window, not counting frame
  1277.  01h    BYTE    columns in window, not counting frame
  1278.  02h    BYTE    row number of top of window
  1279.  03h    BYTE    2*column number of left of window
  1280.  04h    BYTE    character attribute for ???
  1281.  05h    BYTE    character attribute for background/border
  1282.  06h    BYTE    character attribute for ???
  1283.  07h    DWORD    pointer to ??? on screen
  1284.  0Bh  4 BYTEs    ???
  1285.  0Fh    BYTE    nonzero if window may be resized
  1286. Note:    if running in monochrome mode, character attributes at offsets 04h to
  1287.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  1288.       are changed to 07h on reading
  1289. --------U-16FFB6-----------------------------
  1290. INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
  1291.     AX = FFB6h
  1292. Return: AH = ???
  1293.     AL = ???
  1294. --------U-16FFB7-----------------------------
  1295. INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET ???
  1296.     AX = FFB7h
  1297.     BX = direction
  1298.         0000h copy to buffer
  1299.         else  copy from buffer
  1300.     DS:SI -> 70-byte buffer with ???
  1301. Return: data copied
  1302. Note:    available only when popped up under v6.0+
  1303. --------U-16FFB8-----------------------------
  1304. INT 16 U - PC Tools v5.1+ DESKTOP API - GET/SET???
  1305.     AX = FFB8h
  1306.     BH = subfunction
  1307.         00h get
  1308.         Return: BL = old value of ???
  1309.             CL = old value of ??? (v6.0+)
  1310.             CH = old value of ??? (v6.0+)
  1311.         nonzero set
  1312.         BL = new value for ???
  1313.         CL = new value for ??? (v6.0+)
  1314.         CH = new value for ??? (v6.0+)
  1315.         DH = ???
  1316.         Return: AL = old value replaced by CL (v6.0+)
  1317.             AH = old value replaced by CH (v6.0+)
  1318. --------U-16FFB9-----------------------------
  1319. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1320.     AX = FFB9h
  1321.     ???
  1322. Return: AX = ???
  1323.     CX = ???
  1324.     DS:SI -> ???
  1325.     ES:DI -> ???
  1326. --------U-16FFBA-----------------------------
  1327. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1328.     AX = FFBAh
  1329.     ???
  1330. Return: AX = ???
  1331. Note:    available only when popped up
  1332. --------U-16FFBB-----------------------------
  1333. INT 16 U - PC Tools v5.1+ DESKTOP API - CLEAR ??? FLAG
  1334.     AX = FFBBh
  1335. Note:    available only when popped up
  1336. SeeAlso: AX=FFB4h
  1337. --------U-16FFBC-----------------------------
  1338. INT 16 U - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
  1339.     AX = FFBCh
  1340. --------U-16FFBD-----------------------------
  1341. INT 16 U - PC Tools v5.1+ DESKTOP API - ??? DATABASE INDEXING MESSAGES
  1342.     AX = FFBDh
  1343.     ???
  1344. Return: ???
  1345. --------U-16FFBE-----------------------------
  1346. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1347.     AX = FFBEh
  1348.     ???
  1349. Return: ???
  1350. Note:    available only when popped up
  1351. --------U-16FFBF-----------------------------
  1352. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1353.     AX = FFBFh
  1354.     BX = DOS file handle to write on
  1355.     ???
  1356. Return: ???
  1357. Note:    available only when popped up
  1358. --------U-16FFC0-----------------------------
  1359. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1360.     AX = FFC0h
  1361.     ???
  1362. Return: AX = 0000h if successful
  1363.     AX = FFFFh on error
  1364. Note:    available only when popped up
  1365. --------U-16FFC1-----------------------------
  1366. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1367.     AX = FFC1h
  1368.     BL = ???
  1369.     ES:DI -> data structure (see below)
  1370.     ???
  1371. Return: AX = ???
  1372. Note:    available only when popped up
  1373. SeeAlso: AX=FFC2h,AX=FFC3h
  1374.  
  1375. Format of data structure:
  1376. Offset    Size    Description
  1377.  00h    WORD    ???
  1378.  02h    WORD    ???
  1379.  04h    WORD    ???
  1380.  06h    WORD    ???
  1381.  08h    WORD    ???
  1382.  0Ah    BYTE    ???
  1383.  0Bh    BYTE    ??? (zero/nonzero)
  1384. ---v7.1---
  1385.  0Ch    WORD    ???
  1386.  0Eh    BYTE    ???
  1387.  0Fh    WORD    ???
  1388.  11h    WORD    ???
  1389.     ???
  1390. --------U-16FFC2-----------------------------
  1391. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1392.     AX = FFC2h
  1393.     BL = ???
  1394.     ES:DI -> data structure (see AX=FFC1h)
  1395.     ???
  1396. Return: AH = ???
  1397.     CX = ???
  1398.     DH = ???
  1399.     DL = ???
  1400. Note:    available only when popped up
  1401. SeeAlso: AX=FFC1h,AX=FFC3h
  1402. --------U-16FFC3-----------------------------
  1403. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1404.     AX = FFC3h
  1405.     BL = ???
  1406.     ES:DI -> data structure (see AX=FFC1h)
  1407.     ???
  1408. Return: AH = ???
  1409.     CX = ???
  1410.     DH = ???
  1411.     DL = ???
  1412. Note:    available only when popped up
  1413. SeeAlso: AX=FFC1h,AX=FFC2h
  1414. --------U-16FFC4-----------------------------
  1415. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1416.     AX = FFC4h
  1417. Return: AL = ???
  1418.     BX = segment of scratch space???
  1419.     CX = segment of stored screen data (section covered by window???)
  1420.     DX = segment of window parameters for ???
  1421.     ES:BP -> ???
  1422. Note:    available only when popped up in versions prior to 6.0
  1423. --------U-16FFC5-----------------------------
  1424. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
  1425.     AX = FFC5h
  1426. Return: BL = nonzero if loaded resident
  1427.        = 00h if nonresident
  1428. Note:    available only when popped up; should call AX=FFEFh first to ensure
  1429.       that DESKTOP is active
  1430. SeeAlso: AX=FFEFh,AX=FFF3h
  1431. --------U-16FFC6-----------------------------
  1432. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1433.     AX = FFC6h
  1434.     BL = new value for ???
  1435. --------U-16FFC7-----------------------------
  1436. INT 16 U - PC Tools v5.1+ DESKTOP API - REMOVE WINDOW
  1437.     AX = FFC7h
  1438.     ???
  1439. Return: ???
  1440. --------U-16FFC8-----------------------------
  1441. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1442.     AX = FFC8h
  1443. Return: DS:SI -> ???
  1444. Note:    valid only while popped up
  1445. --------U-16FFC9-----------------------------
  1446. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY DATA TO CLIPBOARD
  1447.     AX = FFC9h
  1448.     DS:SI -> characters to store in clipboard
  1449.     CX = size in bytes
  1450. Return: CF set on error
  1451. Notes:    available only when popped up
  1452.     while copying, bytes of 00h and 0Ah are skipped
  1453. --------U-16FFCA-----------------------------
  1454. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1455.     AX = FFCAh
  1456.     DX = ???
  1457. Return: AX destroyed
  1458. Note:    available only when popped up
  1459. --------U-16FFCB-----------------------------
  1460. INT 16 U - PC Tools v5.1+ DESKTOP API - SELECT WINDOW PARAMETERS???
  1461.     AX = FFCBh
  1462.     DX = window specifier???
  1463. Return: AX destroyed
  1464. Note:    available only when popped up
  1465. SeeAlso: AX=FFB5h
  1466. --------U-16FFCC-----------------------------
  1467. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  1468.     AX = FFCCh
  1469.     DS:SI -> ASCIZ string
  1470. Return: AX = ???
  1471.     CX = ???
  1472.     ES:DI -> address past last character displayed (v5.1/5.5)
  1473.           -> ??? on menu bar (v6.0)
  1474. --------U-16FFCD-----------------------------
  1475. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1476.     AX = FFCDh
  1477.     DS:DX -> ???
  1478. Return: ???
  1479. Note:    available only when popped up
  1480. --------U-16FFCE-----------------------------
  1481. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
  1482.     AX = FFCEh
  1483.     CX = ???
  1484. Return: nothing???
  1485. --------U-16FFCF-----------------------------
  1486. INT 16 U - PC Tools v5.1+ DESKTOP API - CLOSE PRINTER/PRINT FILE
  1487.     AX = FFCFh
  1488. Note:    available only when popped up
  1489. --------U-16FFD0-----------------------------
  1490. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO PRINT???
  1491.     AX = FFD0h
  1492.     ???
  1493. Return: ???
  1494. Note:    available only when popped up
  1495. --------U-16FFD1-----------------------------
  1496. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY PRINT OPTIONS MENU
  1497.     AX = FFD1h
  1498. Return: BX = number of copies
  1499.     DX = destination
  1500.         00h cancel
  1501.         01h LPT1
  1502.         02h LPT2
  1503.         03h    LPT3
  1504.         04h    COM1
  1505.         05h    COM2
  1506.         06h disk file
  1507. Note:    available only when popped up
  1508. --------U-16FFD2-----------------------------
  1509. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1510.     AX = FFD2h
  1511.     BX = ???
  1512. Return: BL = ???
  1513. Note:    available only when popped up
  1514. --------U-16FFD3-----------------------------
  1515. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1516.     AX = FFD3h
  1517.     DS:SI -> 92-byte data record for ???
  1518. Return: ???
  1519. SeeAlso: AX=FED3h
  1520. --------U-16FFD4BH3C-------------------------
  1521. INT 16 U - PC Tools v5.1+ DESKTOP API - CREATE/OPEN/DELETE FILE
  1522.     AX = FFD4h
  1523.     BH = 3Ch create file (with no attributes)
  1524.          3Dh open file
  1525.          41h delete file
  1526.     BL = access mode
  1527.          00h read only
  1528.          01h write only
  1529.          02h read/write
  1530.     DS:SI -> ASCIZ filename
  1531. Return: BX = file handle
  1532.         0000h on error
  1533. Note:    operation is attempted in (in order) the directory from which the
  1534.       desktop was started/run???, the directory specified with the
  1535.       filename, X:\PCTOOLS\, and X:\
  1536. --------U-16FFD5-----------------------------
  1537. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1538.     AX = FFD5h
  1539.     ???
  1540. Return: ???
  1541. Note:    available only when popped up
  1542. --------U-16FFD6-----------------------------
  1543. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1544.     AX = FFD6h
  1545.     BX = ???
  1546.     CX = ???
  1547.     DX = offset in ???
  1548.     ???
  1549. Return: ???
  1550. Note:    available only when popped up
  1551. --------U-16FFD7-----------------------------
  1552. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1553.     AX = FFD7h
  1554.     ???
  1555. Return: BL = ???
  1556. Note:    available only when popped up
  1557. --------U-16FFD8-----------------------------
  1558. INT 16 U - PC Tools v5.1+ DESKTOP API - SAFE CREATE FILE
  1559.     AX = FFD8h
  1560.     DS:BX -> ASCIZ filename
  1561. Return: BX = file handle
  1562.         0000h on error
  1563. Note:    pops up confirmation menu if file already exists
  1564.     only available when popped up???
  1565. --------U-16FFD9-----------------------------
  1566. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1567.     AX = FFD9h
  1568. Return: AX = ???
  1569. Note:    available only when popped up
  1570. --------U-16FFDA-----------------------------
  1571. INT 16 U - PC Tools v5.1+ DESKTOP API - GET NAME OF LAST FILE OPENED
  1572.     AX = FFDAh
  1573.     DS:SI -> ??? (v5.1/5.5 only)
  1574. Return: DS:SI -> filename
  1575. --------U-16FFDB-----------------------------
  1576. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1577.     AX = FFDBh
  1578.     BL = ???
  1579. Note:    available only when popped up
  1580. --------U-16FFDC-----------------------------
  1581. INT 16 U - PC Tools v5.1+ DESKTOP API - UNHOOK
  1582.     AX = FFDCh
  1583. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  1584.       original values
  1585. --------U-16FFDDBX0000-----------------------
  1586. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  1587.     AX = FFDDh
  1588.     BX = 0000h
  1589. Return: CX = 5555h 
  1590.     DX = 5555h if PCShell installed in resident mode
  1591. --------U-16FFDDBX0001-----------------------
  1592. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  1593.     AX = FFDDh
  1594.     BX = 0001h
  1595. Return: CF clear if request successful (PCShell will pop up)
  1596.     CF set on error
  1597. SeeAlso: AX=FFDDh/BX=0003h
  1598. --------U-16FFDDBX0002-----------------------
  1599. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  1600.     AX = FFDDh
  1601.     BX = 0002h
  1602. Return: AL = 
  1603.         00h ???
  1604.         01h ???
  1605. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  1606.       awaits a keystroke, and aborts the current process
  1607. --------U-16FFDDBX0003-----------------------
  1608. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  1609.     AX = FFDDh
  1610.     BX = 0003h
  1611. SeeAlso: AX=FFDDh/BX=0001h
  1612. --------U-16FFDDBX0004-----------------------
  1613. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  1614.     AX = FFDDh
  1615.     BX = 0004h
  1616. Return: CF clear if successful
  1617.         DS:SI -> ???
  1618. --------U-16FFDDBX0005-----------------------
  1619. INT 16 U - PC Tools v5.1+ PCShell API - ???
  1620.     AX = FFDDh
  1621.     BX = 0005h
  1622.     ???
  1623. Return: ???
  1624. Note:    resets various variables if certain conditions are met
  1625. --------U-16FFDDBX0006-----------------------
  1626. INT 16 U - PC Tools v5.1+ PCShell API - ???
  1627.     AX = FFDDh
  1628.     BX = 0006h
  1629.     ???
  1630. Return: ???
  1631. Note:    resets various variables if certain conditions are met
  1632. --------U-16FFDDBX0007-----------------------
  1633. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  1634.     AX = FFDDh
  1635.     BX = 0007h
  1636. Return: CF clear if successful
  1637. SeeAlso: AX=FFDDh/BX=0008h
  1638. --------U-16FFDDBX0008-----------------------
  1639. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  1640.     AX = FFDDh
  1641.     BX = 0008h
  1642. Return: CF undefined
  1643. SeeAlso: AX=FFDDh/BX=0007h
  1644. --------U-16FFDDBX0009-----------------------
  1645. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  1646.     AX = FFDDh
  1647.     BX = 0009h
  1648. Return: CF clear if successful
  1649.         DS:SI -> list of pointers (see below)
  1650.  
  1651. Format of returned pointer list:
  1652. Offset    Size    Description
  1653.  00h    WORD    offset of WORD containing ???
  1654.  02h    WORD    offset of name of program to execute
  1655.  04h    WORD    offset of 80-byte buffer for ???
  1656.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  1657.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  1658. --------U-16FFDDBX000A-----------------------
  1659. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  1660.     AX = FFDDh
  1661.     BX = 000Ah
  1662. Return: CX = 5555h if running
  1663.     DX = 5555h
  1664. Note:    also sets a flag
  1665. --------U-16FFDDBX000B-----------------------
  1666. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  1667.     AX = FFDDh
  1668.     BX = 000Bh
  1669.     ???
  1670. Return: CX = 5555h if PCRUN active
  1671.     DX = 5555h
  1672. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  1673. --------U-16FFDE-----------------------------
  1674. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY POPUP MENU
  1675.     AX = FFDEh
  1676.     DS:DX -> menu description (must be on a paragraph boundary)
  1677. Return: AX = ???
  1678.         AL seems to be the number of the selected button
  1679. Note:    available only when popped up
  1680. SeeAlso: AX=FFEEh
  1681. --------U-16FFDF-----------------------------
  1682. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1683.     AX = FFDFh
  1684.     ???
  1685. Return: ???
  1686. --------U-16FFE0-----------------------------
  1687. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1688.     AX = FFE0h
  1689.     CX = ???
  1690.     DX = ???
  1691. Note:    available only when popped up
  1692. --------U-16FFE1-----------------------------
  1693. INT 16 U - PC Tools v5.1+ DESKTOP API - BEEP
  1694.     AX = FFE1h
  1695. --------U-16FFE2-----------------------------
  1696. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1697.     AX = FFE2h
  1698.     DX = ???
  1699. Return: ???
  1700. Note:    available only when popped up
  1701. --------U-16FFE3-----------------------------
  1702. INT 16 U - PC Tools v5.1+ DESKTOP API - PRINT CHARACTER
  1703.     AX = FFE3h
  1704.     BL = character to print to currently open printer or print file
  1705. Return: CF set on error
  1706. Note:    available only when popped up
  1707. SeeAlso: INT 17/AH=00h
  1708. --------U-16FFE4-----------------------------
  1709. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1710.     AX = FFE4h
  1711.     DX = segment of ???
  1712. Return: ???
  1713. Note:    available only when popped up
  1714. --------U-16FFE5-----------------------------
  1715. INT 16 U - PC Tools v5.1+ DESKTOP API - POP UP FILE SELECTION MENU
  1716.     AX = FFE5h
  1717.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  1718.     DX = segment of window parameters???
  1719. Return: AX = DOS file handle for file
  1720.         DS:DX -> filename???
  1721.        = FFFFh if cancelled by user
  1722. Note:    available only when popped up
  1723. SeeAlso: AX=FFDAh
  1724. --------U-16FFE6-----------------------------
  1725. INT 16 U - PC Tools v5.1+ DESKTOP API - CHECK FOR AND GET KEYSTROKE
  1726.     AX = FFE6h
  1727. Return: AX = 0000h if no key available
  1728.          else  BIOS keycode
  1729. Notes:    available only when popped up
  1730.     invokes INT 28 idle interrupt before checking for key
  1731. --------U-16FFE7-----------------------------
  1732. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1733.     AX = FFE7h
  1734.     BX = segment of ???
  1735. Return: ???
  1736. Note:    available only when popped up
  1737. --------U-16FFE8-----------------------------
  1738. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY NUMBER
  1739.     AX = FFE8h
  1740.     CX = number
  1741.     DH = attribute
  1742.     DS:SI -> destination for ASCII number
  1743. Return: DS:SI buffer filled in with alternating characters and attributes
  1744. --------U-16FFE9-----------------------------
  1745. INT 16 U - PC Tools v5.1+ DESKTOP API - GET FILE LIST???
  1746.     AX = FFE9h
  1747. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  1748. Note:    available only when popped up
  1749. --------U-16FFEA-----------------------------
  1750. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY COUNTED STRING
  1751.     AX = FFEAh
  1752.     DS:SI -> counted string (count byte followed by string)
  1753. Return: ???
  1754. Note:    available only when popped up
  1755. --------U-16FFEB-----------------------------
  1756. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1757.     AX = FFEBh
  1758.     ???
  1759. Return: ???
  1760. --------U-16FFEC-----------------------------
  1761. INT 16 U - PC Tools v5.1+ DESKTOP API - GET KEY
  1762.     AX = FFECh
  1763.     DS:SI -> FAR routine to ???
  1764.     BX = ???
  1765.     ???
  1766. Return: AX = keystroke
  1767.         FFFFh if F10 pressed to go to menu
  1768. Notes:    available only when popped up
  1769.     invokes INT 28 while waiting for keystroke
  1770.     F10 is hotkey to Desktop menu
  1771. --------U-16FFED-----------------------------
  1772. INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
  1773.     AX = FFEDh
  1774. Return: AX = ???
  1775. Note:    available only when popped up
  1776. --------U-16FFEE-----------------------------
  1777. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE PULLDOWN MENUS
  1778.     AX = FFEEh
  1779.     DS:SI -> pulldown menu system description (see below)
  1780. Return: AX destroyed
  1781. Notes:    available only when popped up
  1782.     if the accessory does not need any menu items of its own, it should
  1783.       call AX=FFFAh instead
  1784. SeeAlso: AX=FFF7h,AX=FFFAh
  1785.  
  1786. Format of pulldown menu system description:
  1787. Offset    Size    Description
  1788.  00h    WORD    offset of menu bar contents (counted string)
  1789.  02h    WORD    number of items on menu bar
  1790.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  1791.  0Eh 10    BYTEs    which character to highlight in each menu item (01h=first)
  1792.  18h    WORD    offset of first menu definition (see below)
  1793.  1Ah    WORD    offset of second menu definition
  1794.     ...
  1795.  
  1796. Format of menu definition:
  1797. Offset    Size    Description
  1798.  00h    WORD    offset of menu contents (see below)
  1799.  02h    WORD    number of entries in menu
  1800.  04h    for each entry:
  1801.         Offset    Size    Description
  1802.          00h    BYTE    scancode of Alt-key to invoke entry
  1803.          01h    BYTE    character to highlight (01h=first, etc)
  1804.          02h    WORD    offset of FAR routine to handle selection
  1805.  
  1806. Format of menu contents:
  1807. Offset    Size    Description
  1808.  00h    BYTE    number of lines in menu
  1809.  01h    BYTE    width of menu
  1810.  02h  N BYTEs    counted strings, one for each line in menu
  1811. --------U-16FFEFCX0000-----------------------
  1812. INT 16 U - PC Tools v5.1+ DESKTOP API - INSTALLATION CHECK
  1813.     AX = FFEFh
  1814.     CX = 0000h
  1815. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  1816.         BX = segment of resident portion
  1817.         AX = ??? (v5.1/5.5 only)
  1818. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  1819. --------U-16FFF0-----------------------------
  1820. INT 16 U - PC Tools v5.1+ DESKTOP API - SET ???
  1821.     AX = FFF0h
  1822.     DX = ???
  1823. Return: AX destroyed
  1824. Note:    available only when popped up
  1825. --------U-16FFF1BX0000-----------------------
  1826. INT 16 U - PC Tools v5.1+ DESKTOP API - ALTERNATE INSTALLATION CHECK
  1827.     AX = FFF1h
  1828.     BX = 0000h  leave ??? flag as is
  1829.         nonzero set ??? flag
  1830. Return: CX = 5555h if installed
  1831.     DX = 5555h
  1832. --------U-16FFF2-----------------------------
  1833. INT 16 U - PC Tools v5.1+ DESKTOP API - DISPLAY HELP LINE
  1834.     AX = FFF2h
  1835.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  1836.         or help text
  1837. Return: AX destroyed
  1838. Notes:    available only when popped up
  1839.     if the specified string does not start with '[', it is displayed
  1840.       centered on the bottom line, else the function key labels are shown
  1841. --------U-16FFF3-----------------------------
  1842. INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO UNLOAD RESIDENT DESKTOP
  1843.     AX = FFF3h
  1844. Note:    releases any EMS being used; restores video mode, page, and cursor
  1845.       shape; and restores interrupt vectors
  1846. SeeAlso: AX=FFC5h,AX=FFEFh
  1847. --------U-16FFF4-----------------------------
  1848. INT 16 U - PC Tools v5.1+ DESKTOP API - ???
  1849.     AX = FFF4h
  1850.     ???
  1851. Return: ???
  1852. Note:    available only when popped up
  1853. SeeAlso: AX=FFF6h
  1854. --------U-16FFF5-----------------------------
  1855. INT 16 U - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
  1856.     AX = FFF5h
  1857. Return: ES:BX -> screen attributes data structure (see below)
  1858.     AL = ??? (v6.0+)
  1859.  
  1860. Format of attribute data structure:
  1861. Offset    Size    Description
  1862.  -1    BYTE    attribute for desktop background
  1863.  00h    BYTE    attribute for normal characters on desktop menu
  1864.  01h    BYTE    attribute for highlighted characters on desktop menu
  1865.  02h  5    BYTEs    ???
  1866.  07h    BYTE    attribute for dialog boxes
  1867.  08h 15 BYTEs    ???
  1868.  17h    BYTE    attribute for message boxes
  1869. --------U-16FFF6-----------------------------
  1870. INT 16 U - PC Tools v5.1+ DESKTOP API - INVOKE NOTEPAD EDITOR
  1871.     AX = FFF6h
  1872.     DS = segment of editor buffer structure (see below)
  1873.     BX = ???
  1874.     DX = segment of window parameters structure (see AX=FFB5h)
  1875. Return: ???
  1876. Note:    available only when popped up
  1877. SeeAlso: AX=FFF4h
  1878.  
  1879. Format of editor buffer structure:
  1880. Offset    Size    Description
  1881.  00h    WORD    offset of current cursor position in buffer segment
  1882.  02h  2 BYTEs    ???
  1883.  04h    WORD    offset of beginning of file data in buffer segment
  1884.  06h 10 BYTEs    ???
  1885.  10h  N BYTEs    ASCIZ name of file being edited
  1886. --------U-16FFF7-----------------------------
  1887. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS MENU BAR ENTRY???
  1888.     AX = FFF7h
  1889.     DS:SI -> ???
  1890.     ???
  1891. Return: ???
  1892. Notes:    available only when popped up
  1893.     performs input processing on the menu bar set up with AX=FFEEh
  1894. SeeAlso: AX=FFEEh,AX=FFFBh
  1895. --------U-16FFF8-----------------------------
  1896. INT 16 U - PC Tools v5.1+ DESKTOP API - DRAW EMPTY WINDOW
  1897.     AX = FFF8h
  1898.     DS:0000h -> window parameters structure (see AX=FFB5h)
  1899.     DS:BX -> DWORD to store address of ??? on screen
  1900. Return: ???
  1901. --------U-16FFF9-----------------------------
  1902. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE SCREEN REFRESH ROUTINE
  1903.     AX = FFF9h
  1904.     ES:BX -> FAR routine to redisplay the utility's window
  1905. Note:    available only when popped up
  1906. --------U-16FFFA-----------------------------
  1907. INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE STANDARD PULLDOWN MENUS
  1908.     AX = FFFAh
  1909. Notes:    available only when popped up
  1910.     adds the "Window" option to the "Desktop" option which is the only one
  1911.       available when no accessories are active.  Unlike AX=FFEEh, no
  1912.       additional menu items are added between "Desktop" and "Window"
  1913. SeeAlso: AX=FFEEh,AX=FFFBh
  1914. --------U-16FFFB-----------------------------
  1915. INT 16 U - PC Tools v5.1+ DESKTOP API - PROCESS STANDARD MENU BAR
  1916.     AX = FFFBh
  1917. Return: ???
  1918. Notes:    available only when popped up
  1919.     performs input processing on the standard menu bar set up with AX=FFFAh
  1920. SeeAlso: AX=FFF7h
  1921. --------U-16FFFC-----------------------------
  1922. INT 16 U - PC Tools v5.1+ DESKTOP API - GET HOTKEYS AND KEYBOARD VECTOR
  1923.     AX = FFFCh
  1924. Return: ES:BX -> hotkey table (see below)
  1925.     DS:DX = original INT 9 vector
  1926.  
  1927. Format of hotkey table:
  1928. Offset    Size    Description
  1929.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  1930.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  1931.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  1932.  06h  2 BYTEs    scancode/shift state for screen autodial key
  1933. --------U-16FFFD-----------------------------
  1934. INT 16 U - PC Tools v5.1+ DESKTOP API - COPY ???
  1935.     AX = FFFDh
  1936. Return: AX destroyed
  1937. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  1938. SeeAlso: AX=FF91h,AX=FF92h
  1939. --------M-16FFFE-----------------------------
  1940. INT 16 U - PC Tools v5.1+ DESKTOP API - SHOW MOUSE CURSOR
  1941.     AX = FFFEh
  1942. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  1943. --------M-16FFFF-----------------------------
  1944. INT 16 U - PC Tools v5.1+ DESKTOP API - HIDE MOUSE CURSOR
  1945.     AX = FFFFh
  1946. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  1947. --------P-17----DX0ABC-----------------------
  1948. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  1949.     DX = 0ABCh
  1950. Return: AX = AAAAh
  1951.     DX = BAAAh
  1952.     ES = code segment of resident portion
  1953. --------P-17----DX0B90-----------------------
  1954. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  1955.     DX = 0B90h
  1956. Return: DX = ABBBh
  1957.     ES = code segment of resident portion
  1958. --------P-17----DX0B91-----------------------
  1959. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  1960.     DX = 0B91h
  1961. Return: DX = ABCBh
  1962.     ES = code segment of resident portion
  1963. --------P-17----DX0F5F-----------------------
  1964. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  1965.     DX = 0F5Fh
  1966. Return: AX = AAAAh
  1967.     DX = F555h
  1968.     ES = code segment of resident portion
  1969. --------B-1700-------------------------------
  1970. INT 17 - PRINTER - WRITE CHARACTER
  1971.     AH = 00h
  1972.     AL = character to write
  1973.     DX = printer number (00h-02h)
  1974. Return: AH = printer status (see below)
  1975. SeeAlso: AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  1976.  
  1977. Bitfields for printer status:
  1978.  bit 7    not busy
  1979.  bit 6    acknowledge
  1980.  bit 5    out of paper
  1981.  bit 4    selected
  1982.  bit 3    I/O error
  1983.  bits 2,1 unused
  1984.  bit 0    timeout
  1985. --------B-1701-------------------------------
  1986. INT 17 - PRINTER - INITIALIZE PORT
  1987.     AH = 01h
  1988.     DX = printer number (00h-02h)
  1989. Return: AH = printer status (see AH=00h)
  1990. Note:    some printers report that they are ready immediately after
  1991.       initialization when they actually are not; a more reliable result may
  1992.       be obtained by calling AH=02h after a brief delay
  1993. SeeAlso: AH=02h,INT 1A/AH=10h"NEC"
  1994. --------B-1702-------------------------------
  1995. INT 17 - PRINTER - GET STATUS
  1996.     AH = 02h
  1997.     DX = printer number (00h-02h)
  1998. Return: AH = printer status (see AH=00h)
  1999. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  2000. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC"
  2001. --------P-1702--DX0000-----------------------
  2002. INT 17 - INSET - INSTALLATION CHECK
  2003.     AH = 02h
  2004.     DX = 0000h
  2005.     CX = 07C3h (1987d)
  2006. Return: CX = 07C2h (1986d) if installed
  2007. Program: INSET is a text/graphics integration program
  2008. --------P-1703-------------------------------
  2009. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  2010.     AH = 03h
  2011. Return: BX = ???
  2012.     CX = ???
  2013. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2014.       Vertisoft Systems, Inc.
  2015. SeeAlso: AH=04h,AH=0Eh,INT 1A/AH=E5h
  2016. --------P-1704-------------------------------
  2017. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  2018.     AH = 04h
  2019. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  2020. SeeAlso: AH=03h,AX=0503h,INT 1A/AH=E5h
  2021. --------P-170500-----------------------------
  2022. INT 17 U - Emulaser ELTSR - ???
  2023.     AX = 0500h
  2024.     ???
  2025. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  2026.     BX = ???
  2027.     CX = PSP segment of ELTSR
  2028.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  2029.     SI = ???
  2030.     DI = ???
  2031. SeeAlso: AH=04h,INT 1A/AH=E5h
  2032. --------P-170501-----------------------------
  2033. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  2034.     AX = 0501h
  2035. Return: (see AX=0500h)
  2036. Note:    restores interrupt vectors without checking whether they have been
  2037.       hooked by later programs; should only be called if ELTSR reports
  2038.       that it is safe to unload
  2039. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  2040. --------P-170502-----------------------------
  2041. INT 17 U - Emulaser ELTSR - SET ???
  2042.     AX = 0502h
  2043.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  2044.     CL = ???
  2045.     DL = ???
  2046. Return: (see AX=0500h)
  2047. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  2048. --------P-170503-----------------------------
  2049. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  2050.     AX = 0503h
  2051. Return: (see AX=0500h)
  2052. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  2053. --------P-1706-------------------------------
  2054. INT 17 U - Emulaser ELTSR - ???
  2055.     AH = 06h
  2056.     ???
  2057. Return: ???
  2058. SeeAlso: AH=05h,INT 1A/AH=E5h
  2059. --------P-1707-------------------------------
  2060. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  2061.     AH = 07h
  2062.     ES:DX -> ASCIZ filename to be opened
  2063. Return: ???
  2064. Note:    new output will be appended to the specified file
  2065. SeeAlso: AH=08h,INT 1A/AH=E5h
  2066. --------P-1708-------------------------------
  2067. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  2068.     AH = 08h
  2069.     ???
  2070. Return: ???
  2071. Desc:    close the file previously opened by function 07h
  2072. SeeAlso: AH=07h,INT 1A/AH=E5h
  2073. --------P-1709-------------------------------
  2074. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  2075.     AH = 09h
  2076.     BX = ???
  2077.     CX = ???
  2078.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  2079. Return: AX = status
  2080.         00h successful
  2081.         FFh failed
  2082. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2083.       Vertisoft Systems, Inc.
  2084. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  2085.       that either ELSPL or Disk Spool II be installed
  2086. SeeAlso: AH=0Ah,INT 1A/AH=E401h,INT 1A/AH=E5h
  2087. --------P-170A-------------------------------
  2088. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  2089.     AH = 0Ah
  2090.     ES:BX -> ??? buffer
  2091.     CX = length of ??? buffer
  2092. Return: ???
  2093. Note:    copies the specified name into the buffer passed to ELSPL as the
  2094.       filename by AH=09h
  2095. SeeAlso: AH=09h,INT 1A/AH=E5h
  2096. --------P-170B-------------------------------
  2097. INT 17 U - Emulaser ELTSR - GET ???
  2098.     AH = 0Bh
  2099. Return: AX:BX -> ???
  2100. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  2101. --------P-170C-------------------------------
  2102. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  2103.     AH = 0Ch
  2104.     ???
  2105. Return: ???
  2106. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  2107. --------P-170D-------------------------------
  2108. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  2109.     AH = 0Dh
  2110. Return: AX = state (0000h off, 0010h on)
  2111. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  2112.       the ScrlLk light as its activity indicator
  2113. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  2114. --------P-170E-------------------------------
  2115. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  2116.     AH = 0Eh
  2117. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  2118.       Vertisoft Systems, Inc.
  2119. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  2120.       processed in the background, but may also be called by applications
  2121.       to give Emulaser additional CPU time
  2122. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  2123. --------P-1720-------------------------------
  2124. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER
  2125.     AH = 20h
  2126.     AL = function number
  2127.         00h installation check
  2128.         Return: BX = driver version number (BH=major,BL=minor)
  2129.             CH = ??? (00h)
  2130.             CL = ???
  2131.             DX = ??? (0100h)
  2132.         Note: also enables the remaining functions
  2133.         01h set ??? flag
  2134.         02h get information
  2135.         CL = subfunction
  2136.             00h get printer type
  2137.             Return: ES:DI -> ASCIZ printer name
  2138.             01h get paper size
  2139.             DX = size index
  2140.             Return: ES:DI -> ASCIZ paper size description
  2141.             02h get ???
  2142.             Return: BX = ???
  2143.             03h get printer information???
  2144.             DX = ???
  2145.             ES:BX -> buffer for ??? (min 134 bytes)
  2146.         03h ???
  2147.         ES:BX -> ???
  2148.         04h get ???
  2149.         Return: ES:DI -> ???
  2150.         05h advance printer to next page
  2151.         Note: also clears flag set by function 01h
  2152.         06h advance printer to next page and shut down
  2153.         Note:    also clears flag set by function 01h and disables
  2154.               functions other than 00h
  2155.         07h not implemented, AX returned unchanged
  2156.     BL = printer number???
  2157. Return: AX = status
  2158.         0000h successful
  2159.         0001h invalid printer???
  2160.         0002h ???
  2161.         0003h invalid subfunction
  2162.         0005h driver disabled, must call function 00h first
  2163.         0009h unknown printer error
  2164.         000Bh printer not selected
  2165.         000Ch printer out of paper
  2166.         000Eh error while writing to serial printer
  2167.         000Fh ???
  2168.         0010h invalid function number
  2169.         0011h value out of range
  2170. Index:    installation check;PC Paint Plus
  2171. --------N-172400-----------------------------
  2172. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  2173.     AX = 2400h
  2174.     DL = new state
  2175.         00h disabled
  2176.         01h enabled
  2177. Return: DL = 24h if installed
  2178.     DH = minor version number
  2179.     CX = network address of this machine
  2180.     AL = status
  2181.         00h successful
  2182.         01h timeout
  2183.         02h header error
  2184.         03h data error
  2185.         04h busy
  2186.         05h invalid parameters
  2187. SeeAlso: AX=2403h,INT 16/AX=4500h
  2188. --------N-172401-----------------------------
  2189. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  2190.     AX = 2401h
  2191.     BL = timeout in clock ticks
  2192. Return: AL = status (see AX=2400h)
  2193.     DX:BX -> receive buffer
  2194. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  2195. --------N-172402-----------------------------
  2196. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  2197.     AX = 2402h
  2198.     transmit buffer filled (see AX=2403h)
  2199. Return: AL = status (see AX=2400h)
  2200. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  2201. --------N-172403-----------------------------
  2202. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  2203.     AX = 2403h
  2204. Return: AL = status (see AX=2400h)
  2205.     CX = number of characters in receive ring buffer
  2206.     DX:BX -> transmit buffer
  2207. SeeAlso: AX=2400h,AX=2402h
  2208. --------N-172404-----------------------------
  2209. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  2210.     AX = 2404h
  2211.     BX = target address
  2212. Return: AL = status (see AX=2400h)
  2213. SeeAlso: AX=2402h,AX=2405h
  2214. --------N-172405-----------------------------
  2215. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  2216.     AX = 2405h
  2217.     BX = target address
  2218. Return: AL = status (see AX=2400h)
  2219. SeeAlso: AX=2402h,AX=2404h
  2220. --------N-172406-----------------------------
  2221. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  2222.     AX = 2406h
  2223. Return: AL = status (see AX=2400h)
  2224. SeeAlso: AX=2407h,AX=240Ah
  2225. --------N-172407-----------------------------
  2226. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  2227.     AX = 2407h
  2228. Return: AL = status (see also AX=2400h)
  2229.         06h end of data
  2230.     DL = received character
  2231. SeeAlso: AX=2406h
  2232. --------N-172408-----------------------------
  2233. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  2234.     AX = 2408h
  2235. Return: AL = status (see also AX=2400h)
  2236.         06h end of data
  2237.     CX = number of bytes in receive buffer
  2238.     DX:SI -> receive buffer
  2239. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  2240. --------N-172409-----------------------------
  2241. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  2242.     AX = 2409h
  2243.     BX = target address
  2244.     CX = number of data bytes
  2245.     DL = command code to send
  2246.     DS:SI -> data bytes for command
  2247. Return: AL = status (see also AX=2400h)
  2248.         03h no response
  2249.         06h remote currently unable to perform command
  2250. SeeAlso: AX=2405h,AX=2408h
  2251. --------N-17240A-----------------------------
  2252. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  2253.     AX = 240Ah
  2254. Return: AL = status (see AX=2400h)
  2255. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  2256. --------N-17240B-----------------------------
  2257. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  2258.     AX = 240Bh
  2259.     DL = character to send
  2260. Return: AL = status (see also AX=2400h)
  2261.         03h transmission error
  2262.         06h write error
  2263. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  2264. --------N-17240C-----------------------------
  2265. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  2266.     AX = 240Ch
  2267. Return: AL = status (see also AX=2400h)
  2268.         03h transmission error
  2269.         06h remote breaks connection
  2270. SeeAlso: AX=240Ah,AX=240Bh
  2271. --------J-175000-----------------------------
  2272. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  2273.     AX = 5000h
  2274.     BX = country code
  2275.         0001h USA (English), 0051h Japan
  2276. Return: AL = status
  2277.         00h successful
  2278.         01h bad country code
  2279.         02h other error
  2280. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  2281. --------J-175001-----------------------------
  2282. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  2283.     AX = 5001h
  2284. Return: AL = status
  2285.         00h successful
  2286.         BX = country code
  2287.         02h error
  2288. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  2289. --------J-1751-------------------------------
  2290. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  2291.     AH = 51h
  2292.     DX = 2-byte JIS code
  2293. Return: DX = shift-JIS value or 0000h on error
  2294. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  2295.       characters to Shift-JIS characters, and the other performs the
  2296.       opposite conversion
  2297. SeeAlso: AX=5000h,AH=52h
  2298. --------J-1752-------------------------------
  2299. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  2300.     AH = 52h
  2301.     DX = 2-byte shift-JIS code
  2302. Return: DX = JIS code or 0000h on error
  2303. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  2304.       characters to Shift-JIS characters, and the other performs the
  2305.       opposite conversion
  2306. SeeAlso: AH=51h
  2307. --------V-1760-------------------------------
  2308. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  2309.     AH = 60h
  2310. Return: AL = 60h
  2311.     DX = CS of resident code
  2312. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  2313.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  2314.       consisting of an 80h followed by the actual command
  2315. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  2316. --------V-1761-------------------------------
  2317. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  2318.     AH = 61h
  2319. Return: AL = 61h
  2320.     DX = CS of resident code
  2321. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  2322. --------P-1762-------------------------------
  2323. INT 17 U - T2PS v1.0 - UNINSTALL
  2324.     AH = 62h
  2325. Return: nothing
  2326. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  2327. --------P-1763-------------------------------
  2328. INT 17 U - T2PS v1.0 - SET PARAMETERS
  2329.     AH = 63h
  2330.     ES:SI -> settings (see below)
  2331. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  2332.       Technologies
  2333. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  2334.  
  2335. Format of settings:
  2336. Offset    Size    Description
  2337.  00h    WORD    LPT port number (0=LPT1, etc.)
  2338.  02h    WORD    page heigh in points
  2339.  04h    WORD    page width in points
  2340.  06h    WORD    top margin in points
  2341.  08h    WORD    bottom margin in points
  2342.  0Ah    WORD    left margin in points
  2343.  0Ch    WORD    right margin in points
  2344.  0Eh    WORD    font size in points
  2345.  10h    WORD    tab size
  2346.  12h    WORD    timeout in clock ticks
  2347. --------P-1764-------------------------------
  2348. INT 17 U - T2PS v1.0 - GET PARAMETERS
  2349.     AH = 64h
  2350.     ES:SI -> buffer for settings (see AH=63h)
  2351. Return: ES:SI buffer filled
  2352. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  2353. --------N-1781-------------------------------
  2354. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  2355.     AH = 81h
  2356.     AL = 00h (NTNX compatibility mode)
  2357.     CL = number of jobs to cancel
  2358. Return: AL = status
  2359.         00h success
  2360.         01h..7Fh warning
  2361.         80h general failure
  2362.         81h host overloaded (NTNX only)
  2363.         82h module busy (NTNX only)
  2364.         83h host busy (NTNX only)
  2365.         84h re-entry flag set
  2366.         85h invalid request
  2367.         86h invalid printer
  2368.         87h invalid process ID
  2369.         89h access denied
  2370.         8Ah option not available for given port type
  2371.         8Bh option not available for given task type
  2372.         91h printer busy
  2373.         C2h file not found
  2374.         C3h path not found
  2375.         C4h file access failure
  2376. Note:    cancels the last CL printouts for the current task
  2377. SeeAlso: AH=82h
  2378. --------N-1782-------------------------------
  2379. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  2380.     AH = 82h
  2381.     AL = 00h (NTNX compatibility mode)
  2382. Return: AL = status (see AH=81h)
  2383. SeeAlso: AH=81h
  2384. --------N-1783-------------------------------
  2385. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  2386.     AH = 83h
  2387.     AL = mode
  2388.         00h NTNX compatibility
  2389.         CL = number of copies (max 99, default 1)
  2390.         02h MW386 v2+
  2391.         BX = logical device number
  2392.             00h-03h = LPT1-LPT4
  2393.             04h-07h = COM1-COM4
  2394.         CX = number of copies
  2395. Return: AL = status (see AH=81h)
  2396. Note:    in NTNX compatibility mode, this function only affects LPT1
  2397. --------N-1784-------------------------------
  2398. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  2399.     AH = 84h
  2400.     AL = mode
  2401.         00h NTNX compatibility
  2402.         02h MW386 v2+
  2403.         BX = logical device number
  2404.             00h-03h = LPT1-LPT4
  2405.             04h-07h = COM1-COM4
  2406. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  2407.       under MW386 in NTNX compatibility mode)
  2408. --------J-1784-------------------------------
  2409. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  2410.     AH = 84h
  2411.     AL = character
  2412.     DX = printer number
  2413. Return: AH = printer status (see AH=00h)
  2414. SeeAlso: AH=00h,AH=85h
  2415. --------J-1785-------------------------------
  2416. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  2417.     AH = 85h
  2418.     AL = new state (00h enabled, 01h disabled)
  2419. SeeAlso: AH=84h"AX"
  2420. --------N-1787-------------------------------
  2421. INT 17 - Alloy NTNX - SET INDOS POINTER
  2422.     AH = 87h
  2423.     AL = 00h
  2424.     CX:BX -> buffer for user-written printer drivers
  2425. Return: BX,CX destroyed
  2426. Note:    must be executed before the printer is enabled
  2427. SeeAlso: AH=8Ah
  2428. --------N-1788-------------------------------
  2429. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  2430.     AH = 88h
  2431.     AL = mode
  2432.         00h NTNX compatibility
  2433.         DX = NTNX printer number
  2434.             00h host LPT1
  2435.             01h host LPT2
  2436.             02h host LPT3
  2437.             03h host LPT4
  2438.             04h host COM1
  2439.             05h host COM2
  2440.             06h user's logical COM2
  2441.             07h user's terminal AUX port
  2442.             08h user's logical COM1 (MW386 only)
  2443.         01h MW386
  2444.         DX = MW386 printer number
  2445. Return: AH = status (see AH=81h)
  2446. Note:    removes specified printer from the spooler's list of printers
  2447. SeeAlso: AH=89h,AH=8Bh
  2448. --------N-1789-------------------------------
  2449. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  2450.     AH = 89h
  2451.     AL = mode
  2452.         00h NTNX compatibility
  2453.         DX = NTNX printer number (see AH=88h)
  2454.         01h MW386
  2455.         DX = MW386 printer number
  2456. Return: AL = status (see AH=81h)
  2457. Note:    the specified printer is added to the spooler's list of available
  2458.       printers
  2459. SeeAlso: AH=88h,AH=8Bh
  2460. --------N-178A-------------------------------
  2461. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  2462.     AH = 8Ah
  2463.     ???
  2464. SeeAlso: AH=92h
  2465. --------N-178B-------------------------------
  2466. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  2467.     AH = 8Bh
  2468.     DS:DX -> ASCIZ printer name
  2469. Return: AL = status (see also AH=81h)
  2470.         00h successful
  2471.         DX = physical device number
  2472. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  2473. --------N-178C-------------------------------
  2474. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  2475.     AH = 8Ch
  2476.     DX = physical device number
  2477.     ES:DI -> 17-byte buffer for ASCIZ device name
  2478. Return: AL = status (see also AH=81h)
  2479.         00h successful
  2480.         ES:DI buffer filled
  2481. SeeAlso: AH=88h,AH=8Bh
  2482. --------N-178D-------------------------------
  2483. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  2484.     AH = 8Dh
  2485.     AL = 00h
  2486. Notes:    clears all buffers and resets spooler to boot-up values
  2487.     MW386 supports this function for compatibility only; it is a NOP
  2488. Return: AL = status (see AH=81h)
  2489. --------N-178E-------------------------------
  2490. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  2491.     AH = 8Eh
  2492.     AL = 00h
  2493. Return: CX:BX -> INT 28 entry point
  2494. SeeAlso: AH=8Fh
  2495. --------N-178F-------------------------------
  2496. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  2497.     AH = 8Fh
  2498.     AL = 00h
  2499. Return: CX:BX -> DOS intercept routine
  2500. SeeAlso: AH=8Eh
  2501. --------N-1790-------------------------------
  2502. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  2503.     AH = 90h
  2504.     AL = mode
  2505.         00h NTNX compatibility
  2506.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  2507.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  2508.         02h MW386 v2+
  2509.         BX = logical device number
  2510.             00h-03h = LPT1-LPT4
  2511.             04h-07h = COM1-COM4
  2512.     CX:SI -> ASCIZ pathname
  2513. Return: AL = status (see AH=81h)
  2514. Note:    in mode 00h, the file is always sent to logical LPT1
  2515. SeeAlso: AH=A0h
  2516. --------N-1791-------------------------------
  2517. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  2518.     AH = 91h
  2519.     AL = mode
  2520.         00h NTNX compatibility
  2521.         Return: CX = user number (00h = host)
  2522.             DX = currently selected printer number (00h-08h)
  2523.         01h MW386
  2524.         Return: CX = user number
  2525.             DX = physical dev number of currently selected printer
  2526.         02h MW386 v2+
  2527.         BX = logical device number
  2528.             00h-03h = LPT1-LPT4
  2529.             04h-07h = COM1-COM4
  2530.         Return: CX = user number
  2531.             DX = physical device number
  2532. Return: AL = status (see AH=81h)
  2533. SeeAlso: AH=8Ch
  2534. --------N-1792-------------------------------
  2535. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  2536.     AH = 92h
  2537.     AL = 00h
  2538.     CL = 00h
  2539. Return: CL = driver state
  2540.         01h initialized
  2541.         80h not initialized
  2542.     AX = status (see AH=81h)
  2543. SeeAlso: AH=8Ah
  2544. --------N-1794-------------------------------
  2545. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  2546.     AH = 94h
  2547.     AL = mode
  2548.         00h NTNX compatibility
  2549.         DX = NTNX printer number (see AH=88h)
  2550.         01h MW386
  2551.         DX = MW386 printer number
  2552.         02h MW386 v2+
  2553.         BX = logical printer number
  2554.         DX = MW386 printer number
  2555. Return: AL = status (see AH=81h)
  2556. Note:    modes 00h and 01h affect only logical LPT1
  2557. SeeAlso: AH=8Bh,AH=95h
  2558. --------N-1795-------------------------------
  2559. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  2560.     AH = 95h
  2561.     AL = mode
  2562.         00h NTNX compatibility
  2563.         Return: DX = NTNX printer number (see AH=88h)
  2564.                 (FFFFh if current printer not compatible with NTNX)
  2565.         01h MW386
  2566.         Return: DX = MW386 printer number
  2567.         02h MW386 v2+
  2568.         BX = logical device number
  2569.             00h-03h = LPT1-LPT4
  2570.             04h-07h = COM1-COM4
  2571.         Return: DX = MW386 printer number (FFFFh = none)
  2572. Return: AL = status (see AH=81h)
  2573. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  2574. SeeAlso: AH=94h
  2575. --------N-1796-------------------------------
  2576. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  2577.     AH = 96h
  2578.     AL = 00h
  2579. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  2580.       returning
  2581. SeeAlso: INT 14/AH=24h
  2582. --------N-1797-------------------------------
  2583. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  2584.     AH = 97h
  2585.     AL = mode
  2586.         00h NTNX compatibility
  2587.         02h MW386 v2+
  2588.         BX = logical device number
  2589.             00h-03h = LPT1-LPT4
  2590.             04h-07h = COM1-COM4
  2591.     CH,CL,DH = three character break sequence
  2592.     DL = subfunction
  2593.         00h set break string
  2594.         else reset break
  2595. Return: AL = status (see AH=81h)
  2596. Notes:    mode 00h affects only logical LPT1
  2597.     when the break string is encountered, the spool file will be closed and
  2598.       queued for printing automatically
  2599.     the break string is not permanently saved, and will be reset each time
  2600.       MW386 or the user is rebooted
  2601. SeeAlso: AH=9Bh
  2602. --------N-1798-------------------------------
  2603. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  2604.     AH = 98h
  2605.     AL = 00h
  2606.     DL = printer number (FFh=current)
  2607. Return: AL = status
  2608.         00h successful
  2609.         01h incorrect printer
  2610.         02h task not found
  2611. Note:    MW386 supports this function for compatibility only; it is a NOP
  2612. --------N-1799-------------------------------
  2613. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  2614.     AH = 99h
  2615.     AL = mode
  2616.         00h NTNX compatibility
  2617.         DL = NTNX printer number (see AH=88h)
  2618.             (FFh = task's current logical LPT1)
  2619.         DH = mode
  2620.             bit 0: get mode if 1, set mode if 0
  2621.             bit 1: private ("attached")
  2622.             bit 2: direct instead of spooled
  2623.             bits 3-7 reserved (0)
  2624.         01h MW386
  2625.         DX = MW386 printer number
  2626.         CL = mode (as for DH above)
  2627. Return: AL = status (see AH=81h)
  2628.     DH = mode (bits 1 and 2 set as above)
  2629.     DL = printer owner's user number if not spooled
  2630. --------N-179A-------------------------------
  2631. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  2632.     AH = 9Ah
  2633.     AL = mode
  2634.         00h NTNX compatibility
  2635.         DX = NTNX printer number (see AH=88h)
  2636.             (FFFFh = current logical LPT1)
  2637.         01h MW386
  2638.         DX = MW386 printer number
  2639.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  2640. Return: AL = status (see AH=81h)
  2641. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  2642.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  2643. SeeAlso: AH=A4h
  2644. --------N-179B-------------------------------
  2645. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  2646.     AH = 9Bh
  2647.     AL = mode
  2648.         00h NTNX compatibility
  2649.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  2650.         01h MW386
  2651.         CX = timeout value in seconds (00h = never)
  2652.         02h MW386 v2+
  2653.         BX = logical device number
  2654.             00h-03h = LPT1-LPT4
  2655.             04h-07h = COM1-COM4
  2656.         CX = timeout value in seconds (00h = never)
  2657. Return: AL = status (see AH=81h)
  2658. Notes:    modes 00h and 01h affect only the current logical LPT1
  2659.     if no data is sent to a printer for the specified amount of time, the
  2660.       spool file will be closed and queued for printing automatically
  2661. SeeAlso: AH=97h
  2662. --------N-17A0-------------------------------
  2663. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  2664.     AH = A0h
  2665.     AL = mode
  2666.         00h NTNX compatibility
  2667.         DX = ??? (NTNX, MW386 v1.x only)
  2668.         02h MW386 v2+
  2669.         BX = logical device number
  2670.             00h-03h = LPT1-LPT4
  2671.             04h-07h = COM1-COM4
  2672.     CX:SI -> ASCIZ pathname
  2673. Return: AL = status (see AH=81h)
  2674. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  2675.       the original file to be modified or deleted while the copy is printed
  2676.     in mode 00h, the file is printed on logical LPT1
  2677. SeeAlso: AH=90h
  2678. --------N-17A4-------------------------------
  2679. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  2680.     AH = A4h
  2681.     AL = new state
  2682.         00h form feed after end of print job disabled
  2683.         01h form feed enabled
  2684. Return: AL = status (see AH=81h)
  2685. Note:    only affects the current logical LPT1
  2686. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  2687. --------N-17A6-------------------------------
  2688. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  2689.     AH = A6h
  2690.     AL = new state
  2691.         00h banner page before print job disabled
  2692.         01h banner page enabled
  2693. Return: AL = status (see AH=81h)
  2694. Note:    only affects the current logical LPT1
  2695. SeeAlso: AH=A4h
  2696. --------N-17A7-------------------------------
  2697. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  2698.     AH = A7h
  2699.     AL = spool flags
  2700.         bit 0: banner page enabled (see AH=A4h)
  2701.         bit 1: form feed enabled (see AH=A6h)
  2702.         bits 2-6: reserved (0)
  2703.         bit 7: set flags if 1, get flags if 0
  2704.     BX = logical device number
  2705.         00h-03h = LPT1-LPT4
  2706.         04h-07h = COM1-COM4
  2707. Return: AL = status (see AH=81h)
  2708. Note:    the documentation does not state which register contains the result of
  2709.       a GET
  2710. SeeAlso: AH=A4h,AH=A6h
  2711. --------N-17A8-------------------------------
  2712. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  2713.     AH = A8h
  2714.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  2715. Return: AL = status (see AH=81h)
  2716. Note:    allows application to specify banner page filename for spool files
  2717.       collected from the application's printer output
  2718. SeeAlso: AH=A9h
  2719. --------N-17A9-------------------------------
  2720. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  2721.     AH = A9h
  2722.     AL = new spool drive (2=C:,3=D:,etc)
  2723. Return: AL = status (see AH=81h)
  2724. Note:    does not remove previous spooling directory since jobs may be pending
  2725. SeeAlso: AH=A8h
  2726. --------N-17AA-------------------------------
  2727. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  2728.     AH = AAh
  2729.     AL = mode
  2730.         00h NTNX
  2731.         DX = NTNX printer number (see AH=88h)
  2732.         01h MW386
  2733.         DX = MW386 printer number
  2734. Return: AH = instantaneous printer status
  2735.         00h printer ready
  2736.         01h not ready
  2737.         12h off line
  2738.         13h out of paper
  2739.         14h general device failure
  2740.         15h device timeout
  2741.         16h bad device number
  2742. --------N-17AF-------------------------------
  2743. INT 17 - Alloy MW386 - CHECK SPOOLER
  2744.     AH = AFh
  2745. Return: AX = 55AAh if spooler available
  2746. --------c-17C0-------------------------------
  2747. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  2748.     AH = C0h
  2749.     DX = printer port (0-3)
  2750. Return: ES:BX -> control block (see below)
  2751. SeeAlso: AH=C1h
  2752.  
  2753. Format of control block:
  2754. Offset    Size    Description
  2755.  00h    WORD    printer number
  2756.  02h    WORD    address of printer status port
  2757.  04h    WORD    number of first record in queue
  2758.  06h    WORD    number of last record in queue
  2759.  08h    DWORD    characters already printed
  2760.  0Ch    DWORD    number of characters remaining
  2761.  10h    DWORD    pointer to dequeue buffer
  2762.  14h    DWORD    previous count of characters printed
  2763.  18h    DWORD    number of clock ticks taken to print them
  2764.  1Ch    WORD    offset of next character to output
  2765.  1Eh    WORD    offset of next character to print
  2766.  20h    WORD    pointer to spooling queue record
  2767.  22h    BYTE    current spooling status
  2768.  23h    BYTE    current printer status:
  2769.         00h OK
  2770.         01h not ready
  2771.         02h paused with message
  2772.         03h paused
  2773.         04h initializing
  2774.         FEh non-existent port
  2775.         FFh not spooled
  2776.  24h    BYTE    current control record type
  2777.  25h    WORD    observed printer speed
  2778.  27h    WORD    characters to print per service
  2779.  29h    BYTE    01h if disk write needed
  2780.  2Ah    BYTE    01h if queued data should be flushed
  2781.  2Bh    BYTE    01h to update cps status
  2782. --------c-17C1--------------------------------
  2783. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  2784.     AH = C1h
  2785.     DX = printer port (0-3)
  2786.     DS:SI -> ASCIIZ string to save for display
  2787. Note:    flushes pending writes
  2788. SeeAlso: AH=C0h,AH=C2h
  2789. --------c-17C2-------------------------------
  2790. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  2791.     AH = C2h
  2792.     DX = printer port (0-3)
  2793. SeeAlso: AH=C3h
  2794. --------c-17C3-------------------------------
  2795. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  2796.     AH = C3h
  2797.     DX = printer port (0-3)
  2798. SeeAlso: AH=C2h,AH=C7h
  2799. --------c-17C4-------------------------------
  2800. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  2801.     AH = C4h
  2802. Return: DI = B0BFh
  2803.     SI = segment
  2804. --------c-17C5-------------------------------
  2805. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  2806.     AH = C5h
  2807.     DX = printer port (0-3)
  2808. Note:    cancels up to the pause record 
  2809. --------c-17C6-------------------------------
  2810. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  2811.     AH = C6h
  2812.     DX = printer port (0-3)
  2813. Return: AX = 0 printer not active or at pause
  2814.        = 1 printer busy
  2815. --------c-17C7-------------------------------
  2816. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  2817.     AH = C7h
  2818.     DX = printer port (0-3)
  2819. SeeAlso: AH=C3h
  2820. --------P-17CD00-----------------------------
  2821. INT 17 - INSET - EXECUTE COMMAND STRING
  2822.     AX = CD00h
  2823.     DS:DX -> ASCIZ command string (max 80 bytes)
  2824. Return: CX = 07C2h (1986d)
  2825. Note:    user interface menus pop up after last command, unless that command
  2826.     exits INSET
  2827. --------P-17CD01-----------------------------
  2828. INT 17 - INSET - GET IMAGE SIZE
  2829.     AX = CD01h
  2830.     DS:DX -> ASCIZ name of image file
  2831. Return: AX = height in 1/720th inch
  2832.     BX = width in 1/720th inch
  2833.     CX = 07C2h (1986d)
  2834. --------P-17CD02-----------------------------
  2835. INT 17 - INSET - INITIALIZE
  2836.     AX = CD02h
  2837. Return: CX = 07C2h (1986d)
  2838. Note:    all open files are closed and the printer is reset
  2839. SeeAlso: AX=CD04h
  2840. --------P-17CD03-----------------------------
  2841. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  2842.     AX = CD03h
  2843. Return: CX = 07C2h (1986d)
  2844. --------P-17CD04-----------------------------
  2845. INT 17 - INSET - INITIALIZE LINKED MODE
  2846.     AX = CD04h
  2847.     ES:SI -> FAR routine for linked mode
  2848. Return: CX = 07C2h
  2849. Note:    calling sequence for linked-mode routine
  2850.     AL = 00h send character in BL to printer
  2851.        = 01h send CX bytes from DS:DX to printer
  2852.        = 02h move print head to horizontal starting position of image
  2853.     return code for linked-mode routine:
  2854.     AX = 0000h success
  2855.        = 0001h failure
  2856. SeeAlso: AX=CD02h,AX=CD08h
  2857. --------P-17CD05-----------------------------
  2858. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  2859.     AX = CD05h
  2860.     DS:DX -> ASCIZ name of PIX file
  2861.     CX = left margin of text in 1/720th inch
  2862. Return: AH = printer type
  2863.         00h page-oriented (multiple images may be placed side-by-side)
  2864.         01h line-oriented (use AX=CD06h for vertical paper movement)
  2865.     CX = 07C2h (1986d)
  2866. SeeAlso: AX=CD07h
  2867. --------P-17CD06-----------------------------
  2868. INT 17 - INSET - GRAPHICS LINE FEED
  2869.     AX = CD06h
  2870. Return: AH = completion status
  2871.         00h image complete
  2872.         01h image incomplete
  2873.     CX = 07C2h (1986d)
  2874. SeeAlso: AX=CD09h
  2875. --------P-17CD07-----------------------------
  2876. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  2877.     AX = CD07h
  2878. Return: CX = 07C2h
  2879. SeeAlso: AX=CD05h
  2880. --------P-17CD08-----------------------------
  2881. INT 17 - INSET - CANCEL LINK MODE
  2882.     AX = CD08h
  2883. Return: CX = 07C2h
  2884. SeeAlso: AX=CD04h
  2885. --------P-17CD09-----------------------------
  2886. INT 17 - INSET - ALTER TEXT LINE SPACING
  2887.     AX = CD09h
  2888.     CX = line spacing in 1/720th inch
  2889. Return: CX = 07C2h
  2890. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  2891. SeeAlso: AX=CD06h
  2892. --------P-17CD0A-----------------------------
  2893. INT 17 - INSET - GET SETUP
  2894.     AX = CD0Ah
  2895.     DS:DX -> buffer for IN.SET data
  2896. Return: CX = 07C2h
  2897. --------P-17CD0B-----------------------------
  2898. INT 17 - INSET - START GETTING SCALED IMAGE
  2899.     AX = CD0Bh
  2900.     DS:SI -> ASCIZ pathname of .PIX file
  2901.     BX = number of bitplanes
  2902.     CX = number of rows in output bitmap
  2903.     DX = number of columns in output bitmap
  2904. Return: AX = status
  2905.         0000h OK
  2906.         FFFFh error    
  2907. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  2908. --------P-17CD0C-----------------------------
  2909. INT 17 - INSET - GET NEXT IMAGE STRIP
  2910.     AX = CD0Ch
  2911. Return:    AX = status
  2912.         0000h OK but not complete
  2913.         0001h OK and image complete
  2914.         FFFFh error
  2915.     DS:SI -> buffer (max 4K) for bit map strip 
  2916.     CX = start row
  2917.     DX = number of rows
  2918.     BX = offset in bytes between bit planes
  2919. Note:    buffer may be overwritten by subsequent calls
  2920. SeeAlso: AX=CD0Bh
  2921. --------P-17F0-------------------------------
  2922. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  2923.     AH = F0h
  2924.     DX = printer port (0-3)
  2925. Return: AX = 0001h Jetstream present
  2926.          else  non-Jetstream port
  2927. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  2928.       to drive printers at up to 80000 characters per second
  2929. --------P-17F1-------------------------------
  2930. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  2931.     AH = F1h
  2932.     CX = data buffer length
  2933.     DX = printer port (0-3)
  2934.     DS:SI -> data buffer
  2935. Return: AX = status
  2936.         0000h printer not ready (see also AH=02h)
  2937.         other printing started
  2938. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  2939. --------P-17F2-------------------------------
  2940. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  2941.     AH = F2h
  2942.     DX = printer port (0-3)
  2943. Return: AX = status
  2944.         0000h prior print request finished
  2945.         other number of characters left to print
  2946. SeeAlso: AH=02h,AH=F1h,AH=F3h
  2947. --------P-17F3-------------------------------
  2948. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  2949.     AH = F3h
  2950.     DX = printer port (0-3)
  2951. Return: AX = number of unprinted characters due to abort
  2952. SeeAlso: AH=F1h,AH=F4h
  2953. --------P-17F4-------------------------------
  2954. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  2955.     AH = F4h
  2956.     DX = printer port (0-3)
  2957.     DS:DS -> FAR post address (called with interrupts on)
  2958. SeeAlso: AH=F1h,AH=F3h
  2959. --------P-17F5-------------------------------
  2960. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  2961.     AH = F5h
  2962.     CX = data buffer length
  2963.     DX = printer port (0-3)
  2964.     DS:SI -> data buffer (32-bit physical address)
  2965. Return: AX = status
  2966.         0000h printer not ready (see also AH=02h)
  2967.         other printing started
  2968. SeeAlso: AH=F1h
  2969. --------B-18---------------------------------
  2970. INT 18 - START CASSETTE BASIC
  2971. Note:    only PCs produced by IBM contain BASIC in ROM, so the action is
  2972.       unpredicatable on compatibles; this interrupt often reboots the
  2973.       system, and often has no effect at all
  2974. SeeAlso: INT 86"NetBIOS"
  2975. --------J-1800-------------------------------
  2976. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  2977.     AH = 00h
  2978. Return: AX = keystroke
  2979. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  2980. --------J-1801-------------------------------
  2981. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  2982.     AH = 01h
  2983. Return: ZF set if no keystroke available
  2984.     ZF clear if keystroke available
  2985.         AX = keystroke
  2986. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  2987. --------J-1802-------------------------------
  2988. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  2989.     AH = 02h
  2990. Return: AL = shift flags
  2991. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  2992. --------J-1803-------------------------------
  2993. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  2994.     AH = 03h
  2995.     ???
  2996. Return: ???
  2997. SeeAlso: AH=00h,AH=04h
  2998. --------J-1804-------------------------------
  2999. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  3000.     AH = 04h
  3001.     ???
  3002. Return: ???
  3003. Note:    details are not available at this time
  3004. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  3005. --------J-18---------------------------------
  3006. INT 18 - NEC PC-9800 series - VIDEO
  3007.     AH = function
  3008.         0Ah set video mode
  3009.         0Bh get video mode
  3010.         0Ch start text screen display
  3011.         0Dh end text screen display
  3012.         0Eh set single display area
  3013.         0Fh set multiple display area
  3014.         10h set cursor shape
  3015.         11h display cursor
  3016.         12h terminate cursor
  3017.         13h set cursor position
  3018.         14h read font patter
  3019.         16h initialize text video RAM
  3020.         1Ah define user character
  3021.     ???
  3022. Return: ???
  3023. Notes:    details are not available at this time
  3024.     text video RAM is located at segments A000h (characters) and A200h
  3025.       (attributes)
  3026. --------B-19---------------------------------
  3027. INT 19 - SYSTEM - BOOTSTRAP LOADER
  3028. Desc:    This interrupt reboots the system without clearing memory or restoring
  3029.       interrupt vectors.  Because interrupt vectors are preserved, this
  3030.       interrupt usually causes a system hang if any TSRs have hooked
  3031.       vectors from 00h through 1Ch, particularly INT 08.
  3032. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  3033.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  3034.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  3035.       This sector should contain a master bootstrap loader and a partition
  3036.       table.  After loading the master boot sector at 0000h:7C00h, the
  3037.       master bootstrap loader is given control.  It will scan the partition
  3038.       table for an active partition, and will then load the operating
  3039.       system's bootstrap loader (contained in the first sector of the
  3040.       active partition) and give it control.
  3041.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  3042.       disk have a valid boot sector
  3043.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  3044.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  3045.       a reset, store 0000h at 0040h:0072h before jumping.
  3046.     VDISK.SYS hooks this interrupt to allow applications to find out how
  3047.       much extended memory has been used by VDISKs (see below).  DOS 3.3+
  3048.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  3049.       at the beginning of its INT 19 handler segment, thus causing some
  3050.       programs to overwrite extended memory which is already in use.
  3051.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  3052.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  3053.       contains extended partitions which point at each other in a loop,
  3054.       since it will never find the end of the linked list of extended
  3055.       partitions
  3056. SeeAlso: INT 14/AH=17h,INT 18
  3057.  
  3058. Format of VDISK header block (at beginning of INT 19 handler's segment):
  3059. Offset    Size    Description
  3060.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  3061.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  3062.  1Dh 15 BYTEs    n/a
  3063.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  3064.  
  3065. Format of hard disk master boot sector:
  3066. Offset    Size    Description
  3067.  00h 446 BYTEs    Master bootstrap loader code
  3068. 1BEh 16 BYTEs    partition record for partition 1 (see below)
  3069. 1CEh 16 BYTEs    partition record for partition 2
  3070. 1DEh 16 BYTEs    partition record for partition 3
  3071. 1EEh 16 BYTEs    partition record for partition 4
  3072. 1FEh    WORD    signature, AA55h indicates valid boot block
  3073.  
  3074. Format of partition record:
  3075. Offset    Size    Description
  3076.  00h    BYTE    boot indicator (80h = active partition)
  3077.  01h    BYTE    partition start head
  3078.  02h    BYTE    partition start sector (bits 0-5)
  3079.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  3080.  04h    BYTE    operating system indicator (see below)
  3081.  05h    BYTE    partition end head
  3082.  06h    BYTE    partition end sector (bits 0-5)
  3083.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  3084.  08h    DWORD    sectors preceding partition
  3085.  0Ch    DWORD    length of partition in sectors
  3086.  
  3087. Values for operating system indicator:
  3088.  00h empty
  3089.  01h DOS 12-bit FAT
  3090.  02h XENIX root file system
  3091.  03h XENIX /usr file system (obsolete)
  3092.  04h DOS 16-bit FAT
  3093.  05h DOS 3.3+ extended partition
  3094.  06h DOS 3.31+ Large File System
  3095.  07h QNX
  3096.  07h OS/2 HPFS
  3097.  07h Advanced Unix
  3098.  08h AIX bootable partition, SplitDrive
  3099.  09h AIX data partition
  3100.  09h Coherent filesystem
  3101.  0Ah OPUS
  3102.  0Ah Coherent swap partition
  3103.  10h OPUS
  3104.  24h NEC MS-DOS 3.x
  3105.  40h VENIX 80286
  3106.  50h Disk Manager, read-only partition
  3107.  51h Disk Manager, read/write partition
  3108.  51h Novell???
  3109.  52h CP/M
  3110.  52h Microport System V/386
  3111.  56h GoldenBow VFeature
  3112.  61h SpeedStor
  3113.  63h Unix SysV/386, 386/ix
  3114.  63h Mach, MtXinu BSD 4.3 on Mach
  3115.  63h GNU HURD
  3116.  64h Novell NetWare
  3117.  65h Novell NetWare (3.11)
  3118.  75h PC/IX
  3119.  80h Minix v1.1 - 1.4a
  3120.  81h Minix v1.4b+
  3121.  81h Linux
  3122.  81h Mitac Advanced Disk Manager
  3123.  82h Linux Swap partition (planned)
  3124.  93h Amoeba file system
  3125.  94h Amoeba bad block table
  3126.  B7h BSDI file system (secondarily swap)
  3127.  B8h BSDI swap partition (secondarily file system)
  3128.  C6h DR-DOS 6.0 LOGIN.EXE-secured partition
  3129.  DBh CP/M, Concurrent CP/M, Concurrent DOS
  3130.  DBh CTOS (Convergent Technologies OS)
  3131.  E1h SpeedStor 12-bit FAT extended partition
  3132.  E4h SpeedStor 16-bit FAT extended partition
  3133.  F2h DOS 3.3+ secondary
  3134.  FEh LANstep
  3135.  FFh Xenix bad block table
  3136. --------B-1A00-------------------------------
  3137. INT 1A - TIME - GET SYSTEM TIME
  3138.     AH = 00h
  3139. Return: CX:DX = number of clock ticks since midnight
  3140.     AL = midnight flag, nonzero if midnight passed since time last read
  3141. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  3142.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  3143.       it, leading to loss of a day if two consecutive midnights pass
  3144.       without a request for the time (e.g. if the system is on but idle)
  3145. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch
  3146. --------B-1A01-------------------------------
  3147. INT 1A - TIME - SET SYSTEM TIME
  3148.     AH = 01h
  3149.     CX:DX = number of clock ticks since midnight
  3150. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  3151. --------B-1A02-------------------------------
  3152. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  3153.     AH = 02h
  3154. Return: CF clear if successful
  3155.         CH = hour (BCD)
  3156.         CL = minutes (BCD)
  3157.         DH = seconds (BCD)    
  3158.         DL = daylight savings flag (00h standard time, 01h daylight time)
  3159.     CF set on error (i.e. clock not running or in middle of update)
  3160. SeeAlso: AH=00h
  3161. --------B-1A03-------------------------------
  3162. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  3163.     AH = 03h
  3164.     CH = hour (BCD)
  3165.     CL = minutes (BCD)
  3166.     DH = seconds (BCD)
  3167.     DL = daylight savings flag (00h standard time, 01h daylight time)
  3168. SeeAlso: AH=01h
  3169. --------B-1A04-------------------------------
  3170. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  3171.     AH = 04h
  3172. Return: CF clear if successful
  3173.         CH = century (BCD)
  3174.         CL = year (BCD)
  3175.         DH = month (BCD)
  3176.         DL = day (BCD)
  3177.     CF set on error
  3178. SeeAlso: AH=02h,AH=05h,INT 21/AH=2Ah
  3179. --------B-1A05-------------------------------
  3180. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  3181.     AH = 05h
  3182.     CH = century (BCD)
  3183.     CL = year (BCD)
  3184.     DH = month (BCD)
  3185.     DL = day (BCD)
  3186. SeeAlso: AH=04h,INT 21/AH=2Bh
  3187. --------B-1A06-------------------------------
  3188. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  3189.     AH = 06h
  3190.     CH = hour (BCD)
  3191.     CL = minutes (BCD)
  3192.     DH = seconds (BCD)
  3193. Return: CF set on error (alarm already set or clock stopped for update)
  3194.     CF clear if successful
  3195. Note:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  3196.       time
  3197. SeeAlso: AH=07h,INT 4A
  3198. --------B-1A07-------------------------------
  3199. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  3200.     AH = 07h
  3201. Return: alarm disabled
  3202. Note:    does not disable the real-time clock's IRQ
  3203. SeeAlso: AH=06h,INT 70
  3204. --------B-1A08-------------------------------
  3205. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  3206.     AH = 08h
  3207.     CH = hours in BCD
  3208.     CL = minutes in BCD
  3209.     DH = seconds in BCD
  3210. --------B-1A09-------------------------------
  3211. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  3212.     AH = 09h
  3213. Return: CH = hours in BCD
  3214.     CL = minutes in BCD
  3215.     DH = seconds in BCD
  3216.     DL = alarm status
  3217.         00h alarm not enabled
  3218.         01h alarm enabled but will not power up system
  3219.         02h alarm will power up system
  3220. --------B-1A0A-------------------------------
  3221. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  3222.     AH = 0Ah
  3223. Return: CF set on error
  3224.     CF clear if successful
  3225.         CX = count of days since Jan 1,1980
  3226. SeeAlso: AH=04h,AH=0Bh
  3227. --------B-1A0B-------------------------------
  3228. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  3229.     AH = 0Bh
  3230.     CX = count of days since Jan 1,1980
  3231. Return: CF set on error
  3232.     CF clear if successful
  3233. SeeAlso: AH=05h,AH=0Ah
  3234. --------J-1A10-------------------------------
  3235. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  3236.     AH = 10h
  3237.     ???
  3238. Return: ???
  3239. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  3240. --------J-1A11-------------------------------
  3241. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  3242.     AH = 11h
  3243.     ???
  3244. Return: ???
  3245. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  3246. --------J-1A12-------------------------------
  3247. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  3248.     AH = 12h
  3249.     ???
  3250. Return: ???
  3251. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  3252. --------A-1A3601-----------------------------
  3253. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  3254.     AX = 3601h
  3255. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  3256.         ASCIZ string "WPCORP\0"
  3257. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  3258.       third party product wants to interface with it.  The third party
  3259.       product must intercept this interrupt and return the address of a
  3260.       keyboard monitor routine.
  3261.     Before checking for keyboard input, and after every key entered by the
  3262.       user, Word Perfect will call the routine whose address was provided
  3263.       in DS:SI with the following parameters:
  3264.         Entry:    AX = key code or 0
  3265.             BX = WordPerfect state flag
  3266.         Exit:    AX = 0 or key code
  3267.             BX = 0 or segment address of buffer with key codes
  3268.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  3269. SeeAlso: INT 16/AX=5500h
  3270. --------N-1A6108-----------------------------
  3271. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  3272.     AX = 6108h
  3273.     STACK:    WORD    conversation ID (0000h-0009h)
  3274.         DWORD    pointer to message buffer
  3275.         WORD    length of message
  3276.         DWORD    pointer to reply buffer
  3277.         WORD    length of reply buffer
  3278.         WORD    0000h (use default "Cparams" structure)
  3279. Return: AX = status (see below)
  3280.     STACK unchanged
  3281. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3282.       which implements the Simple Network Application Protocol
  3283. SeeAlso: AX=6205h
  3284.  
  3285. Values for status:
  3286.  0000h successful
  3287.  F830h "SNAP_ABORTED"
  3288.  FC04h "SNAP_SERVERDIED"
  3289.  FC05h "SNAP_RESEND"
  3290.  FC06h "SNAP_SELECTFAILED"
  3291.  FC07h "SNAP_WRONGVERSION"
  3292.  FC08h "SNAP_INVALIDACK"
  3293.  FC09h "SNAP_TIMEOUT"
  3294.  FC0Ah "SNAP_SERVERREJECT"
  3295.  FC0Bh "SNAP_NOREPLYDUE"
  3296.  FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  3297.  FC0Dh "SNAP_NOINIT"
  3298.  FC0Eh "SNAP_SOCKETERROR"
  3299.  FC0Fh "SNAP_BUFFERLIMIT"
  3300.  FC10h "SNAP_INVALIDCID"
  3301.  FC11h "SNAP_INVALIDOP"
  3302.  FC12h "SNAP_XMITFAIL"
  3303.  FC13h "SNAP_NOMORERETRIES"
  3304.  FC14h "SNAP_BADPARMS"
  3305.  FC15h "SNAP_NOMEMORY"
  3306.  FC16h "SNAP_NOMORECONVS"
  3307.  FFFFh failed (invalid function/parameter)
  3308. --------N-1A6205-----------------------------
  3309. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  3310.     AX = 6205h
  3311.     STACK:    WORD    conversation ID (0000h-0009h)
  3312.         DWORD    pointer to message
  3313.         WORD    length of message
  3314.         WORD    0000h (use default "Cparms" structure)
  3315. Return: AX = status (see AX=6108h)
  3316.     STACK unchanged
  3317. SeeAlso: AX=6108h
  3318. --------N-1A6308-----------------------------
  3319. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  3320.     AX = 6308h
  3321.     STACK:    WORD    offset of ASCIZ "guardian"
  3322.         WORD    offset of ASCIZ hostname
  3323.         WORD    offset of ASCIZ server name
  3324.         WORD    offset of ASCIZ userid
  3325.         WORD    offset of ASCIZ password
  3326.         WORD    offset of password length
  3327.         WORD    offset of password type
  3328.         WORD    offset of "Cparms" structure (see below)
  3329. Return: ???
  3330.     STACK unchanged
  3331. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  3332.       to allocate a buffer)
  3333. SeeAlso: AX=6405h,AX=7202h
  3334.  
  3335. Format of Cparms structure:
  3336. Offset    Size    Description
  3337.  00h    WORD    retry delay in seconds
  3338.  02h    WORD    timeout delay in seconds
  3339.  04h    WORD    maximum buffer size
  3340.  06h    WORD    encryption level
  3341. --------N-1A6405-----------------------------
  3342. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  3343.     AX = 6405h
  3344.     STACK:    WORD    conversation ID (0000h-0009h)
  3345.         DWORD    pointer to message buffer
  3346.         WORD    length of message
  3347.         WORD    0000h (use default "Cparms" structure)
  3348. Return: AX = status (see AX=6108h)
  3349.     STACK unchanged
  3350. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3351.       which implements the Simple Network Application Protocol
  3352. SeeAlso: AX=6308h
  3353. --------N-1A6900-----------------------------
  3354. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  3355.     AX = 6900h
  3356. Return: AX = value used for DS by resident code
  3357. SeeAlso: AX=6A01h,AX=6F01h
  3358. --------N-1A6A01-----------------------------
  3359. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  3360.     AX = 6A01h
  3361.     STACK:    WORD    number of bytes to allocate
  3362. Return: AX = offset of allocated buffer or 0000h if out of memory
  3363.     STACK unchanged
  3364. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3365.       which implements the Simple Network Application Protocol
  3366. SeeAlso: AX=6B01h
  3367. --------N-1A6B01-----------------------------
  3368. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  3369.     AX = 6B01h
  3370.     STACK:    WORD    offset within SNAP data segment of previously allocated
  3371.             buffer
  3372. Return:    STACK unchanged
  3373. Note:    this call is a NOP if the specified offset is 0000h
  3374. SeeAlso: AX=6A01h
  3375. --------N-1A6C04-----------------------------
  3376. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  3377.     AX = 6C04h
  3378.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  3379.         WORD    segment of source buffer
  3380.         WORD    offset of source buffer
  3381.         WORD    number of bytes to copy
  3382. Return: AX = offset of byte after last one copied to destination
  3383.     STACK unchanged
  3384. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3385.       which implements the Simple Network Application Protocol
  3386. SeeAlso: AX=6D04h
  3387. --------N-1A6D04-----------------------------
  3388. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  3389.     AX = 6D04h
  3390.     STACK:    WORD    offset within SNAP data segment of source buffer
  3391.         WORD    segment of destination buffer
  3392.         WORD    offset of destination buffer
  3393.         WORD    number of bytes to copy
  3394. Return: AX = offset of byte after last one copied from source
  3395.     buffer filled
  3396.     STACK unchanged
  3397. SeeAlso: AX=6C04h
  3398. --------N-1A6E01-----------------------------
  3399. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  3400.     AX = 6E01h
  3401.     STACK:    WORD    new value for ???
  3402. Return:    AX = old value of ???
  3403.     STACK unchanged
  3404. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3405.       which implements the Simple Network Application Protocol
  3406. --------N-1A6F01-----------------------------
  3407. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  3408.     AX = 6F01h
  3409.     STACK: WORD 0000h
  3410. Return: AX = status
  3411.         0000h SNAP is resident
  3412.         other SNAP not present
  3413.     STACK unchanged
  3414. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3415.       which implements the Simple Network Application Protocol, and is
  3416.       required by PCVENUS (a network shell).  The combination of SNAP and
  3417.       PCVENUS allows the use of the Andrew File System as one or more
  3418.       networked drives.
  3419. SeeAlso: AX=6900h,AX=7400h
  3420. --------N-1A7002-----------------------------
  3421. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  3422.     AX = 7002h
  3423.     STACK:    WORD    anchor number (0000h-0009h)
  3424.         WORD    new value for the anchor
  3425. Return: AX = status
  3426.         0000h successful
  3427.         FFFFh failed (top word on stack not in range 00h-09h)
  3428.     STACK unchanged
  3429. SeeAlso: AX=7101h
  3430. --------N-1A7101-----------------------------
  3431. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  3432.     AX = 7101h
  3433.     STACK:    WORD    anchor number (0000h-0009h)
  3434. Return:    AX = anchor's value
  3435.     STACK unchanged
  3436. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3437.       which implements the Simple Network Application Protocol
  3438. SeeAlso: AX=7002h
  3439. --------N-1A7202-----------------------------
  3440. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  3441.     AX = 7202h
  3442.     STACK:    WORD    conversation ID (0000h-0009h)
  3443.         WORD    offset within resident data segment of "Cparms"
  3444.             structure (see AX=6308h)
  3445. Return:    AX = status???
  3446.     STACK unchanged
  3447. SeeAlso: AX=6308h
  3448. --------N-1A7302-----------------------------
  3449. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  3450.     AX = 7302h
  3451.     STACK:    WORD    conversation ID (0000h-0009h)
  3452.         WORD    offset within resident data segment of ???
  3453. Return:    AX = ???
  3454.     ???
  3455.     STACK unchanged
  3456. SeeAlso: AX=7400h
  3457. --------N-1A7400-----------------------------
  3458. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  3459.     AX = 7400h
  3460. Return: AX = version (AH=major, AL=minor)
  3461. Note:    this call is only valid if SNAP is installed
  3462. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  3463. --------N-1A75-------------------------------
  3464. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  3465.     AH = 75h
  3466.     AL = ???
  3467. Return: AX = ??? (0000h)
  3468. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3469.       which implements the Simple Network Application Protocol
  3470. --------N-1A76-------------------------------
  3471. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  3472.     AH = 76h
  3473.     AL = ???
  3474. Return: AX = ???
  3475. --------N-1A77-------------------------------
  3476. INT 1A - SNAP.EXE 3.4 - ???
  3477.     AH = 77h
  3478.     AL = ??? (at least 01h)
  3479.     STACK:    WORD    ???
  3480.         ???
  3481. Return: ???
  3482.     STACK unchanged
  3483. --------N-1A7802-----------------------------
  3484. INT 1A - SNAP.EXE 3.4 - ???
  3485.     AX = 7802h
  3486.     STACK:    WORD    ???
  3487.         WORD    ???
  3488. Return: ???
  3489.     STACK unchanged
  3490. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  3491.       which implements the Simple Network Application Protocol
  3492. --------s-1A7F-------------------------------
  3493. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  3494.     AH = 7Fh
  3495.     ???
  3496. Return: ???
  3497. SeeAlso: AH=80h,AH=83h,AH=85h
  3498. --------s-1A80-------------------------------
  3499. INT 1A - PCjr - SET UP SOUND MULTIPLEXOR
  3500.     AH = 80h
  3501.     AL = 00h source is 8253 channel 2
  3502.          01h source is cassette input
  3503.          02h source is I/O channel "Audio IN"
  3504.          03h source is sound generator chip
  3505. SeeAlso: AH=7Fh,AH=83h
  3506. ----------1A80-------------------------------
  3507. INT 1A - PCMCIA Socket Services - GET NUMBER OF ADAPTERS
  3508.     AH = 80h
  3509.     ???
  3510. Return: ???
  3511. SeeAlso: AH=83h"PCMCIA"
  3512. ----------1A81-------------------------------
  3513. INT 1A - PCMCIA Socket Services - REGISTER STATUS CHANGE CALLBACK
  3514.     AH = 81h
  3515.     ???
  3516. Return: ???
  3517. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  3518. --------s-1A8100-----------------------------
  3519. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  3520.     AX = 8100h
  3521. Return: AH > 80h if supported
  3522. ----------1A82-------------------------------
  3523. INT 1A - PCMCIA Socket Services - REGISTER CARD TECHNOLOGY CALLBACK
  3524.     AH = 82h
  3525.     ???
  3526. Return: ???
  3527. SeeAlso: AH=81h"PCMCIA"
  3528. --------s-1A83-------------------------------
  3529. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  3530.     AH = 83h
  3531.     AL = volume (0=lowest, 7=highest)
  3532.     CX = number of bytes to play
  3533.     DX = time between sound samples (multiples of 273 nanoseconds)
  3534.     ES:BX -> sound data (array of 8-bit PCM samples)
  3535. Return: ???
  3536. Notes:    this call returns immediately while the sound plays in the
  3537.       background
  3538.     The sound data pointed to by ES:BX probably shouldn't cross a 64k
  3539.       boundary.  The BIOS appears to call INT 15/AX=91FBh when the sound
  3540.       device underflows to allow another INT 1A/AH=83h for seamless
  3541.       playing of long sounds.
  3542. SeeAlso: AH=84h,INT 15/AH=91h
  3543. ----------1A83-------------------------------
  3544. INT 1A - PCMCIA Socket Services - GET SOCKET SERVICES VERSION NUMBER
  3545.     AH = 83h
  3546.     ???
  3547. Return: ???
  3548. SeeAlso: AH=80h"PCMCIA"
  3549. --------s-1A84-------------------------------
  3550. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  3551.     AH = 84h
  3552. Return: ???
  3553. SeeAlso: AH=83h,AH=85h
  3554. ----------1A84-------------------------------
  3555. INT 1A - PCMCIA Socket Services - INQUIRE ADAPTER
  3556.     AH = 84h
  3557.     ???
  3558. Return: ???
  3559. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  3560. --------s-1A85-------------------------------
  3561. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  3562.     AH = 85h
  3563.     ???
  3564. Return: ???
  3565. SeeAlso: AH=7Fh,AH=83h
  3566. ----------1A85-------------------------------
  3567. INT 1A - PCMCIA Socket Services - GET ADAPTER
  3568.     AH = 85h
  3569.     ???
  3570. Return: ???
  3571. SeeAlso: AH=84h"PCMCIA",AH=86h
  3572. ----------1A86-------------------------------
  3573. INT 1A - PCMCIA Socket Services - SET ADAPTER
  3574.     AH = 86h
  3575.     ???
  3576. Return: ???
  3577. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  3578. ----------1A87-------------------------------
  3579. INT 1A - PCMCIA Socket Services - INQUIRE WINDOW
  3580.     AH = 87h
  3581.     ???
  3582. Return: ???
  3583. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  3584. ----------1A88-------------------------------
  3585. INT 1A - PCMCIA Socket Services - GET WINDOW
  3586.     AH = 88h
  3587.     ???
  3588. Return: ???
  3589. SeeAlso: AH=87h,AH=89h,AH=8Ah
  3590. ----------1A89-------------------------------
  3591. INT 1A - PCMCIA Socket Services - SET WINDOW
  3592.     AH = 89h
  3593.     ???
  3594. Return: ???
  3595. SeeAlso: AH=87h,AH=88h,AH=8Bh
  3596. ----------1A8A-------------------------------
  3597. INT 1A - PCMCIA Socket Services - GET PAGE
  3598.     AH = 8Ah
  3599.     ???
  3600. Return: ???
  3601. SeeAlso: AH=88h,AH=8Bh
  3602. ----------1A8B-------------------------------
  3603. INT 1A - PCMCIA Socket Services - SET PAGE
  3604.     AH = 8Bh
  3605.     ???
  3606. Return: ???
  3607. SeeAlso: AH=89h,AH=8Ah
  3608. ----------1A8C-------------------------------
  3609. INT 1A - PCMCIA Socket Services - INQUIRE SOCKET
  3610.     AH = 8Ch
  3611.     ???
  3612. Return: ???
  3613. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  3614. ----------1A8D-------------------------------
  3615. INT 1A - PCMCIA Socket Services - GET SOCKET
  3616.     AH = 8Dh
  3617.     ???
  3618. Return: ???
  3619. SeeAlso: AH=8Ch,AH=8Eh
  3620. ----------1A8E-------------------------------
  3621. INT 1A - PCMCIA Socket Services - SET SOCKET
  3622.     AH = 8Eh
  3623.     ???
  3624. Return: ???
  3625. SeeAlso: AH=8Ch,AH=8Dh
  3626. ----------1A8F-------------------------------
  3627. INT 1A - PCMCIA Socket Services - GET CARD
  3628.     AH = 8Fh
  3629.     ???
  3630. Return: ???
  3631. SeeAlso: AH=8Dh,AH=90h
  3632. ----------1A90-------------------------------
  3633. INT 1A - PCMCIA Socket Services - RESET CARD
  3634.     AH = 90h
  3635.     ???
  3636. Return: ???
  3637. ----------1A91-------------------------------
  3638. INT 1A - PCMCIA Socket Services - READ ONE
  3639.     AH = 91h
  3640.     ???
  3641. Return: ???
  3642. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  3643. ----------1A92-------------------------------
  3644. INT 1A - PCMCIA Socket Services - WRITE ONE
  3645.     AH = 92h
  3646.     ???
  3647. Return: ???
  3648. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  3649. ----------1A93-------------------------------
  3650. INT 1A - PCMCIA Socket Services - READ MULTIPLE
  3651.     AH = 93h
  3652.     ???
  3653. Return: ???
  3654. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
  3655. ----------1A94-------------------------------
  3656. INT 1A - PCMCIA Socket Services - WRITE MULTIPLE
  3657.     AH = 94h
  3658.     ???
  3659. Return: ???
  3660. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
  3661. ----------1A95-------------------------------
  3662. INT 1A - PCMCIA Socket Services - INQUIRE ERROR DETECTION CODE
  3663.     AH = 95h
  3664.     ???
  3665. Return: ???
  3666. SeeAlso: AH=96h,AH=9Ch
  3667. ----------1A96-------------------------------
  3668. INT 1A - PCMCIA Socket Services - GET ERROR DETECTION CODE
  3669.     AH = 96h
  3670.     ???
  3671. Return: ???
  3672. SeeAlso: AH=95h,AH=97h,AH=9Ch
  3673. ----------1A97-------------------------------
  3674. INT 1A - PCMCIA Socket Services - SET ERROR DETECTION CODE
  3675.     AH = 97h
  3676.     ???
  3677. Return: ???
  3678. SeeAlso: AH=96h,AH=9Ch
  3679. ----------1A98-------------------------------
  3680. INT 1A - PCMCIA Socket Services - START ERROR DETECTION CODE
  3681.     AH = 98h
  3682.     ???
  3683. Return: ???
  3684. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  3685. ----------1A99-------------------------------
  3686. INT 1A - PCMCIA Socket Services - PAUSE ERROR DETECTION CODE
  3687.     AH = 99h
  3688.     ???
  3689. Return: ???
  3690. SeeAlso: AH=9Ah
  3691. ----------1A9A-------------------------------
  3692. INT 1A - PCMCIA Socket Services - RESUME ERROR DETECTION CODE
  3693.     AH = 9Ah
  3694.     ???
  3695. Return: ???
  3696. SeeAlso: AH=99h,AH=98h
  3697. ----------1A9B-------------------------------
  3698. INT 1A - PCMCIA Socket Services - STOP ERROR DETECTION CODE
  3699.     AH = 9Bh
  3700.     ???
  3701. Return: ???
  3702. SeeAlso: AH=98h,AH=99h,AH=9Ch
  3703. ----------1A9C-------------------------------
  3704. INT 1A - PCMCIA Socket Services - READ ERROR DETECTION CODE
  3705.     AH = 9Ch
  3706.     ???
  3707. Return: ???
  3708. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  3709. --------c-1AA0-------------------------------
  3710. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  3711.     AH = A0h
  3712. Return: AH = B0h if installed
  3713.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  3714.         ES = code segment
  3715.         ES:BX -> name of current spool file
  3716.         ES:SI -> current despool file
  3717.         CL = despooler state (00h disabled, 41h enabled)
  3718.         CH = spooler state (00h disabled, 41h enabled)
  3719.         DL = 00h despooler is currently active printing a file
  3720.            = 41h despooler is standing by
  3721.         DH = 00h ???
  3722.            = 41h ???
  3723.         DI = 0000h ???
  3724.          0001h ???
  3725. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3726.       Software Company
  3727. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3728.       as that is a licensed version of Disk Spool II
  3729. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  3730. --------c-1AAB-------------------------------
  3731. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3732.     AH = ABh
  3733. Return:    AH = BAh if installed
  3734.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  3735.         ES = code segment
  3736.         ES:BX -> name of current spool file
  3737.         ES:SI -> current despool file
  3738.         CL = 00h despooler is disabled
  3739.            = 41h despooler is enabled
  3740.         CH = 00h spooler is disabled
  3741.            = 41h spooler is enabled
  3742.         DL = 00h despooler is currently active printing a file
  3743.            = 41h despooler is standing by
  3744.         DH = 00h ???
  3745.            = 41h ???
  3746.         DI = 0000h ???
  3747.          0001h ???
  3748. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  3749.       Software Company
  3750. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  3751. --------c-1AAC-------------------------------
  3752. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  3753.     AH = ACh
  3754. Return: (see AH=ABh)
  3755. Note:    this function is identical to AH=ABh
  3756. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  3757. --------c-1AAD-------------------------------
  3758. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  3759.     AH = ADh
  3760.     AL = function code
  3761.         02h enable spooler only
  3762.         03h enable the despooler
  3763.         04h disable the despooler
  3764.         08h inhibit popup menu
  3765.         09h enable popup menu
  3766.         0Ah ???
  3767.         0Bh disable the spooler
  3768.         0Ch start despooler after last successfully printed document???
  3769.         0Dh start despooler at the exact point where it last left off???
  3770.         0Eh pop up the menu
  3771.         0Fh ???
  3772.         11h ???
  3773.         14h ???
  3774.         15h ???
  3775.         16h ???
  3776.         17h ???
  3777.         18h ???
  3778.         19h ???
  3779.         20h clear file pointed to by the despooler???
  3780.         21h    ???
  3781.         22h    ???
  3782.         23h ???
  3783.         30h ???
  3784. Return: AH = 00h if successful
  3785. SeeAlso: AH=ABh
  3786. --------d-1AB001CX4D52-----------------------
  3787. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  3788.     AX = B001h
  3789.     CX = 4D52h ("MR")
  3790.     DX = 4349h ("CI")
  3791. Return: CX = 4943h ("IC") if installed
  3792.     DX = 524Dh ("RM") if installed
  3793.         ES:DI -> MRCINFO structure (see below)
  3794. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  3795.       be called first, as this call is used for the first, ROM-based
  3796.       MRCI server, while the other call is used for RAM-based servers
  3797.       which may be partially or entirely replacing a prior server
  3798. SeeAlso: INT 2F/AX=4A12h
  3799.  
  3800. Format of MRCINFO structure:
  3801. Offset    Size    Description
  3802.  00h  4 BYTEs    vendor signature
  3803.          "MSFT" Microsoft
  3804.  04h    WORD    server version (high=major)
  3805.  06h    WORD    MRCI specification version
  3806.  08h    DWORD    address of server entry point
  3807.  0Ch    WORD    bit flags: server capabilities (see below)
  3808.  0Eh    WORD    bit flags: hardware assisted capabilities (see below)
  3809.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  3810.  
  3811. Bitfields for capabilities:
  3812.  bit 0    standard compress
  3813.  bit 1    standard decompress
  3814.  bit 2    update compress
  3815.  bit 3    MaxCompress
  3816.  bit 4    reserved
  3817.  bit 5    incremental decompress
  3818.  bits 6-14 reserved
  3819.  bit 15    this structure is in ROM and can't be modified
  3820.      (server capabilities only)
  3821.  
  3822. Call MRCI entry point with:
  3823.     DS:SI -> MRCREQUEST structure (see below)
  3824.     CX = type of client (0000h application, 0001h file system)
  3825.     AX = operation
  3826.         0001h perform standard compression
  3827.         0002h perform standard decompression
  3828.         0004h perform update compression
  3829.         0008h perform MaxCompress
  3830.         0020h perform incremental decompression
  3831.     AX = FFFFh clear flags
  3832.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  3833. Return: AX = status
  3834.         0000h successful
  3835.         0001h invalid function
  3836.         0002h server busy, try again
  3837.         0003h destination buffer too small
  3838.         0004h incompressible data
  3839.         0005h bad compressed data format
  3840. Note:    MRCI driver may chain to a previous driver
  3841.  
  3842. Format of MRCREQUEST structure:
  3843. Offset    Size    Description
  3844.  00h    DWORD    pointer to source buffer
  3845.  04h    WORD    size of source buffer (0000h = 64K)
  3846.  06h    WORD    (UpdateCompress only)
  3847.          (call) offset in source buffer of beginning of changed data
  3848.         (return) offset in destination buffer of beginning of changed
  3849.             compressed data
  3850.  08h    DWORD    pointer to destination buffer
  3851.          must contain original compressed data for UpdateCompress
  3852.  0Ch    WORD    size of destination buffer (0000h = 64K)
  3853.          any compression: size of buffer for compressed data
  3854.          standard decompression: number of bytes to be decompressed
  3855.         incremental decompression: number of byte to decompress now
  3856.         (return) actual size of resulting data
  3857.  0Eh    WORD    client compressed data storage allocation size
  3858.  10h    DWORD    incremental decompression state data
  3859.          set to 00000000h before first incremental decompression call
  3860. Notes:    the source and destination buffers may not overlap
  3861.     the source and destination buffer sizes should normally be the same
  3862.     application should not update the contents of the MRCREQUEST structure
  3863.       between incremental decompression calls
  3864. --------c-1AC0-------------------------------
  3865. INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
  3866.     AH = C0h
  3867. Return: (see AH=A0h)
  3868. Notes:    this call is identical to AH=A0h
  3869.     this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3870.       as that is a licensed version of Disk Spool II
  3871. SeeAlso: AH=A0h,AH=ABh,AH=D0h
  3872. ----------1ACCCCBXCCCC-----------------------
  3873. INT 1A U - DATEFIX - INSTALLATION CHECK
  3874.     AX = CCCCh
  3875.     BX = CCCCh
  3876.     CX = 0000h
  3877. Return: CX = CCCCh if installed
  3878.         ES:BX -> original interrupt handler
  3879. Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
  3880.       machines, where the realtime clock's calendar wraps after 1991
  3881. SeeAlso: AH=FEh,AH=FFh"AT&T"
  3882. --------c-1AD0-------------------------------
  3883. INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
  3884.     AH = D0h
  3885.     AL = function code
  3886.         01h enable spooler and despooler
  3887.         02h enable spooler only
  3888.         03h enable despooler at beginning of file
  3889.         04h disable the despooler
  3890.         05h disable the despooler and spooler
  3891.         06h clear the spool file
  3892.         08h inhibit the popup menu
  3893.         09h enable the popup menu
  3894.         0Ah ??? (called by Disk Spool's INT 21 handler)
  3895.         0Bh disable the spooler
  3896.         0Ch start despooler after last successfully printed document
  3897.         0Dh start despooler at the exact point where it last left off
  3898.         0Eh pop up the menu
  3899.         0Fh ???
  3900.         11h start new spool file??? (called by Disk Spool's INT 21 handler
  3901.             when a program terminates)
  3902.         14h ???
  3903.         15h delete despool file and reset ???
  3904.         16h ??? (writes something to unknown file)
  3905.         17h ??? (writes something to despool file, then reads something
  3906.             else and ???)
  3907.         18h ??? (reads something from despool file, and then ???)
  3908.         19h ??? (creates/truncates spool file)
  3909.         20h clear file pointed to by the despooler
  3910.         21h ??? (writes something to unknown file)
  3911.         22h ??? (writes something to spool file if spooler/despooler using
  3912.             same file)
  3913.         23h ??? (opens/creates unknown file, then ???)
  3914.         30h ???
  3915.         31h ???
  3916.         32h beep
  3917.         33h append CRLF to spool file???
  3918.         34h ???
  3919.         35h ???
  3920.         36h ???
  3921.         37h append CRLF to spool file and start a new spool file???
  3922.         38h ???
  3923.         40h ??? (v4.05)
  3924.         41h ??? (v4.05)
  3925.         51h ??? (called by Disk Spool's INT 21 handler)
  3926.         52h ??? (called by Disk Spool's INT 21 handler)
  3927.         57h ???
  3928.         5Ah ??? (v4.05)
  3929.         5Bh ??? (v4.05)
  3930.         5Ch ??? (v4.05)
  3931. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3932.       as that is a licensed version of Disk Spool II
  3933. SeeAlso: AH=A0h,AH=ADh
  3934. --------c-1AE0-------------------------------
  3935. INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
  3936.     AH = E0h
  3937.     AL = subfunction
  3938.         01h enable spooler
  3939.         02h disable spooler
  3940.         03h enable despooler
  3941.         04h disable despooler
  3942.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  3943. Return: AH = status
  3944.         00h successful
  3945.         F0h printer port not managed by Disk Spool II
  3946.         FFH failed
  3947. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3948.       as that is a licensed version of Disk Spool II
  3949. SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
  3950. --------c-1AE1-------------------------------
  3951. INT 1A - Disk Spool II v4.0x - GET STATUS
  3952.     AH = E1h
  3953.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  3954. Return: AH = status
  3955.         00h successful
  3956.         CL = despooler state (00h disabled, 41h enabled)
  3957.         CH = spooler state (00h disabled, 41h enabled)
  3958.         DL = despooler activity (00h standing by, 41h printing)
  3959.         ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
  3960.             or AutoDespool enabled)
  3961.         ES:SI -> ASCIZ name of current despool file
  3962.         ES:DI -> 3-byte file extension used by Disk Spool II
  3963.         F0h printer port not managed by Disk Spool II
  3964. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3965.       as that is a licensed version of Disk Spool II
  3966. SeeAlso: AH=A0h,AH=E0h,AH=E2h
  3967. --------c-1AE2-------------------------------
  3968. INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
  3969.     AH = E2h
  3970.     AL = which
  3971.         01h first
  3972.         02h next (can only call after "first")
  3973.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  3974. Return: AH = status
  3975.         00h successful
  3976.         ES:BX -> ASCIZ filename
  3977.         F0h no (more) spool files
  3978.         FFh failed
  3979. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3980.       as that is a licensed version of Disk Spool II
  3981. SeeAlso: AH=E0h,AH=E1h
  3982. --------c-1AE301-----------------------------
  3983. INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
  3984.     AX = E301h
  3985.     ES:BX -> ASCIZ filename (max 32 chars)
  3986. Return: AH = status
  3987.         00h successful
  3988.         ES:SI -> spool file status record (see below)
  3989.         F0h not a spool file
  3990.         FFh failed
  3991. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  3992.       as that is a licensed version of Disk Spool II
  3993. SeeAlso: AH=E0h,AX=E302h,AX=E401h
  3994.  
  3995. Format of spool file status record:
  3996. Offset    Size    Description
  3997.  00h    BYTE    hour of creation or last update
  3998.  01h    BYTE    minute of creation or last update
  3999.  02h    BYTE    year-1980 of creation or last update
  4000.  03h    BYTE    month of creation or last update
  4001.  04h    BYTE    day of creation or last update
  4002.  05h    BYTE    total number of copies to print
  4003.  06h    BYTE    number of copies already printed
  4004.  07h    BYTE    printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4005.  08h    BYTE    save status (00h delete after printing, 01h save)
  4006.  09h    BYTE    file status
  4007.           01h done printing, but being saved
  4008.         02h on hold
  4009.         03h queued for printing
  4010.         04h being spooled
  4011.         05h being despooled (i.e. printed)
  4012.  0Ah 16 BYTEs    ASCIZ description
  4013.  1Ah  2 WORDs    file size in bytes (high,low)
  4014.  1Eh  2 WORDs    bytes left to print (high,low)
  4015. --------c-1AE302-----------------------------
  4016. INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
  4017.     AX = E302h
  4018.     ES:BX -> ASCIZ filename (max 32 chars)
  4019.     ES:SI -> spool file status record (see AX=E301h)
  4020. Return: AH = status
  4021.         00h successful
  4022.         F0h not a spool file
  4023.         FFh failed
  4024. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4025.       as that is a licensed version of Disk Spool II
  4026. SeeAlso: AH=E0h,AX=E301h,AX=E401h
  4027. --------c-1AE401-----------------------------
  4028. INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
  4029.     AX = E401h
  4030.     ES:BX -> ASCIZ filename (max 32 chars)
  4031.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4032. Return: AH = status
  4033.         00h successful
  4034.         FFh failed
  4035. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4036.       as that is a licensed version of Disk Spool II
  4037. SeeAlso: AH=E1h,AX=E302h,AX=E402h
  4038. --------c-1AE402-----------------------------
  4039. INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
  4040.     AX = E402h
  4041.     ES:BX -> ASCIZ filename (max 32 chars)
  4042.     CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4043. Return: AH = status
  4044.         00h successful
  4045.         FFh failed
  4046. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4047.       as that is a licensed version of Disk Spool II
  4048. SeeAlso: AH=E1h,AX=E302h,AX=E401h
  4049. --------c-1AE5-------------------------------
  4050. INT 1A U - Emulaser ELSPL.COM - ???
  4051.     AH = E5h
  4052.     ???
  4053. Return: ???
  4054. Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
  4055.       as part of Vertisoft's Emulaser PostScript emulator
  4056. SeeAlso: AH=A0h,INT 17/AH=03h
  4057. --------c-1AEE-------------------------------
  4058. INT 1A U - Disk Spool II v4.05 - ???
  4059.     AH = EEh
  4060.     AL = printer port???
  4061.     ???
  4062. Return: ???
  4063. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  4064.       as that is a licensed version of Disk Spool II
  4065. SeeAlso: AH=E1h
  4066. --------U-1AF7-------------------------------
  4067. INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
  4068.     AH = F7h
  4069. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4070.       time to correct for clock drift
  4071. Note:    any AH value from F0h-F7h or F9h-FEh will perform this function in
  4072.       version 1.1, but F7h is the function called by transient portion
  4073. SeeAlso: AH=F8h,AH=FFh"RighTime"
  4074. --------U-1AF8-------------------------------
  4075. INT 1A - RighTime v1.1 - ENABLE
  4076.     AH = F8h
  4077. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4078.       time to correct for clock drift
  4079. Note:    RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
  4080.       TeSseRact program identifier based on its current state: "RighTime"
  4081.       when enabled, "RighTim"F7h when disabled.
  4082. SeeAlso: AH=F7h,AH=FFh"RighTime"
  4083. --------b-1AFE-------------------------------
  4084. INT 1A - AT&T 6300 - READ TIME AND DATE
  4085.     AH = FEh
  4086. Return: BX = day count (0 = Jan 1, 1984)
  4087.     CH = hour
  4088.     CL = minute
  4089.     DH = second
  4090.     DL = hundredths
  4091. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
  4092. --------b-1AFF-------------------------------
  4093. INT 1A - AT&T 6300 - SET TIME AND DATE
  4094.     AH = FFh
  4095.     BX = day count (0 = Jan 1, 1984)
  4096.     CH = hour
  4097.     CL = minute
  4098.     DH = second
  4099.     DL = hundredths
  4100. Return: ???
  4101. SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh,INT 21/AH=2Dh
  4102. --------U-1AFF-------------------------------
  4103. INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
  4104.     AH = FFh
  4105. Program: RighTime is a TSR by G.T. Becker which continuously adjusts the system
  4106.       time to correct for clock drift
  4107. Note:    upon being permanently disabled, RighTime closes the file handle
  4108.       referencing its executable (which is updated with time correction
  4109.       information every two minutes while RighTime is enabled).
  4110. --------s-1AFF00-----------------------------
  4111. INT 1A - SND - INSTALLATION CHECK???
  4112.     AX = FF00h
  4113. Return: AL = version??? (02h)
  4114.     AH = busy flag (00h if not in a SND call, 01h if SND currently active)
  4115. Note:    the SND API is also supported by IC (Internal Commands) v2.0, a
  4116.       shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
  4117.       command set
  4118. SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
  4119. --------s-1AFF01-----------------------------
  4120. INT 1A - SND - PAUSE
  4121.     AX = FF01h
  4122.     DX = number of clock ticks to delay
  4123. Return:    AH = status
  4124.         00h successful
  4125.         01h SND busy
  4126. Notes:    if successful, execution returns to the caller after the delay expires;
  4127.       if SND is busy, execution returns immediately
  4128.     the IC v2.0 implementation of this API makes no special allowance for
  4129.       time rollover at midnight, which can cause the delay to be over one
  4130.       hour if this function is called just before the BIOS time count
  4131.       rolls over and the delay extends into the next day
  4132. SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
  4133. SeeAlso: INT E0/CL=BDh
  4134. --------s-1AFF02-----------------------------
  4135. INT 1A - SND - START SOUND
  4136.     AX = FF02h
  4137.     DX = frequency in Hertz (14h-FFFFh)
  4138. Return: AH = status
  4139.         00h successful
  4140.         01h SND busy
  4141. SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
  4142. --------s-1AFF03-----------------------------
  4143. INT 1A - SND - STOP SOUND
  4144.     AX = FF03h
  4145. Return: AH = status
  4146.         00h successful
  4147.         01h busy
  4148. Note:    turns off any sound currently being emitted by the PC's speaker unless
  4149.       SND is currently busy processing an API call (this includes
  4150.       background music).  Use AX=FF05h to stop the sound even if an API
  4151.       call is in progress.
  4152. SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
  4153. --------s-1AFF04-----------------------------
  4154. INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
  4155.     AX = FF04h
  4156.     DS:DX -> ASCIZ music string
  4157. Return: AH = status
  4158.         00h successful (music begins playing in background)
  4159.         01h busy
  4160. Note:    the music string accepted by SND is not the same as that accepted by
  4161.       BASIC and other programs which process music strings
  4162. SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
  4163. --------s-1AFF05-----------------------------
  4164. INT 1A - SND - UNCONDITIONALLY STOP SOUND
  4165.     AX = FF05h
  4166. Return: AH = 00h (successful)
  4167. Note:    this function is the same as AX=FF03h, but will stop the sound even if
  4168.       SND is currently busy, such as playing background music
  4169. SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
  4170. --------B-1B---------------------------------
  4171. INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
  4172. Desc:    this interrupt is automatically called when INT 09 determines that
  4173.       Control-Break has been pressed
  4174. Note:    normally points to a short routine in DOS which sets the Ctrl-C flag,
  4175.       thus invoking INT 23h the next time DOS checks for Ctrl-C.
  4176. SeeAlso: INT 23
  4177. --------B-1C---------------------------------
  4178. INT 1C - TIME - SYSTEM TIMER TICK
  4179. Desc:    this interrupt is automatically called on each clock tick by the INT 08
  4180.       handler
  4181. Notes:    this is the preferred interrupt to chain when a program needs to be
  4182.       invoked regularly
  4183.     not available on NEC 9800-series PCs
  4184. SeeAlso: INT 08
  4185. --------B-1D---------------------------------
  4186. INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
  4187. Note:    default parameter table at F000h:F0A4h for 100% compatible BIOSes
  4188. SeeAlso: INT 10/AH=00h
  4189.  
  4190. Format of video parameters:
  4191. Offset    Size    Description
  4192.  00h 16 BYTEs    6845 register values for modes 00h and 01h
  4193.  10h 16 BYTEs    6845 register values for modes 02h and 03h
  4194.  20h 16 BYTEs    6845 register values for modes 04h and 05h
  4195.  30h 16 BYTEs    6845 register values for modes 06h and 07h
  4196.  40h    WORD    bytes in video buffer for modes 00h and 01h
  4197.  42h    WORD    bytes in video buffer for modes 02h and 03h
  4198.  44h    WORD    bytes in video buffer for modes 04h and 05h
  4199.  46h    WORD    bytes in video buffer for modes 06h and 07h
  4200.  48h  8 BYTEs    columns on screen for each of modes 00h through 07h
  4201.  50h  8 BYTEs    CRT controller mode bytes for each of modes 00h through 07h
  4202. --------B-1E---------------------------------
  4203. INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
  4204. Note:    default parameter table at F000h:EFC7h for 100% compatible BIOSes
  4205. SeeAlso: INT 13/AH=0Fh,INT 41
  4206.  
  4207. Format of diskette parameter table:
  4208. Offset    Size    Description
  4209.  00h    BYTE    first specify byte
  4210.         bits 7-4: step rate
  4211.         bits 3-0: head unload time (0Fh = 240 ms)
  4212.  01h    BYTE    second specify byte
  4213.         bits 7-1: head load time (01h = 4 ms)
  4214.         bit    0: non-DMA mode (always 0)
  4215.  02h    BYTE    delay until motor turned off (in clock ticks)
  4216.  03h    BYTE    bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
  4217.  04h    BYTE    sectors per track
  4218.  05h    BYTE    length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
  4219.  06h    BYTE    data length (ignored if bytes-per-sector field nonzero)
  4220.  07h    BYTE    gap length when formatting (50h for 5.25", 6Ch for 3.5")
  4221.  08h    BYTE    format filler byte (default F6h)
  4222.  09h    BYTE    head settle time in milliseconds
  4223.  0Ah    BYTE    motor start time in 1/8 seconds
  4224. --------B-1F---------------------------------
  4225. INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
  4226. Desc:    this vector points at 1024 bytes of graphics data, 8 bytes for each
  4227.       character 80h-FFh
  4228. Note:    graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
  4229.       compatible BIOSes
  4230. SeeAlso: INT 10/AX=5000h,INT 43
  4231. --------O-20---------------------------------
  4232. INT 20 - Minix - SEND/RECEIVE MESSAGE
  4233.     AX = process ID of other process
  4234.     BX -> message
  4235.     CX = 1 send
  4236.          2 receive
  4237.          3 send&receive
  4238. Note:    the message contains the system call number (numbered as in V7 
  4239.       Unix(tm)) and the call parameters
  4240. --------D-20---------------------------------
  4241. INT 20 - DOS 1+ - TERMINATE PROGRAM
  4242.     CS = PSP segment
  4243. Return: never
  4244. Note:    (see INT 21/AH=00h)
  4245. SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
  4246. --------G-20---------------------------------
  4247. INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
  4248.     ???
  4249. Return: ???
  4250. SeeAlso: INT 21"COMTROL HOSTESS"
  4251. --------G-21---------------------------------
  4252. INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
  4253.     ???
  4254. Return: AX = first segment available for control program use
  4255. SeeAlso: INT 20"COMTROL HOSTESS",INT 22"COMTROL HOSTESS"
  4256. --------D-2100-------------------------------
  4257. INT 21 - DOS 1+ - TERMINATE PROGRAM
  4258.     AH = 00h
  4259.     CS = PSP segment
  4260. Notes:    Microsoft recomments using INT 21/AH=4Ch for DOS 2+
  4261.     execution continues at address stored in INT 22 after DOS performs
  4262.       whatever cleanup it needs to do
  4263.     if the PSP is its own parent, the process's memory is not freed; if
  4264.       INT 22 additionally points into the terminating program, the
  4265.       process is effectively NOT terminated
  4266.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4267. SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
  4268. --------D-2101-------------------------------
  4269. INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
  4270.     AH = 01h
  4271. Return: AL = character read
  4272. Notes:    ^C/^Break are checked, and INT 23 executed if read
  4273.     character is echoed to standard output
  4274.     standard input is always the keyboard and standard output the screen
  4275.       under DOS 1.x, but they may be redirected under DOS 2+
  4276. SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
  4277. --------D-2102-------------------------------
  4278. INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
  4279.     AH = 02h
  4280.     DL = character to write
  4281. Return: AL = last character output (despite the official docs which state
  4282.         nothing is returned) (at least DOS 3.3-5.0)
  4283. Notes:    ^C/^Break are checked, and INT 23 executed if pressed
  4284.     standard output is always the screen under DOS 1.x, but may be
  4285.       redirected under DOS 2+
  4286.     the last character output will be the character in DL unless DL=09h
  4287.       on entry, in which case AL=20h as tabs are expanded to blanks
  4288. SeeAlso: AH=06h,AH=09h
  4289. --------D-2103-------------------------------
  4290. INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
  4291.     AH = 03h
  4292. Return: AL = character read
  4293. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4294.     STDAUX is usually the first serial port
  4295. SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
  4296. --------D-2104-------------------------------
  4297. INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
  4298.     AH = 04h
  4299.     DL = character to write
  4300. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4301.     STDAUX is usually the first serial port
  4302.     if STDAUX is busy, this function will wait until it becomes free
  4303. SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
  4304. --------D-2105-------------------------------
  4305. INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
  4306.     AH = 05h
  4307.     DL = character to print
  4308. Notes:    keyboard checked for ^C/^Break, and INT 23 executed if detected
  4309.     STDPRN is usually the first parallel port, but may be redirected under
  4310.       DOS 2+
  4311.     if the printer is busy, this function will wait
  4312. SeeAlso: INT 17/AH=00h
  4313. --------D-2106-------------------------------
  4314. INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
  4315.     AH = 06h
  4316.     DL = character (except FFh)
  4317. Return: AL = character output (despite official docs which state nothing is
  4318.         returned) (at least DOS 3.3-5.0)
  4319. Notes:    does not check ^C/^Break
  4320.     writes to standard output, which is always the screen under DOS 1.x,
  4321.       but may be redirected under DOS 2+
  4322. SeeAlso: AH=02h,AH=09h
  4323. --------D-2106--DLFF-------------------------
  4324. INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
  4325.     AH = 06h
  4326.     DL = FFh
  4327. Return: ZF set if no character available
  4328.     ZF clear if character available
  4329.         AL = character read
  4330. Notes:    ^C/^Break are NOT checked
  4331.     if the returned character is 00h, the user pressed a key with an
  4332.       extended keycode, which will be returned by the next call of this
  4333.       function
  4334.     reads from standard input, which is always the keyboard under DOS 1.x,
  4335.       but may be redirected under DOS 2+
  4336. SeeAlso: AH=0Bh
  4337. --------D-2107-------------------------------
  4338. INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
  4339.     AH = 07h
  4340. Return: AL = character read from standard input
  4341. Notes:    does not check ^C/^Break
  4342.     standard input is always the keyboard under DOS 1.x, but may be
  4343.       redirected under DOS 2+
  4344.     if the interim console flag is set (see AX=6301h), partially-formed
  4345.       double-byte characters may be returned
  4346. SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
  4347. --------D-2108-------------------------------
  4348. INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
  4349.     AH = 08h
  4350. Return: AL = character read from standard input
  4351. Notes:    ^C/^Break are checked, and INT 23 executed if detected
  4352.     standard input is always the keyboard under DOS 1.x, but may be
  4353.       redirected under DOS 2+
  4354.     if the interim console flag is set (see AX=6301h), partially-formed
  4355.       double-byte characters may be returned
  4356. SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h
  4357. --------D-2109-------------------------------
  4358. INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
  4359.     AH = 09h
  4360.     DS:DX -> '$'-terminated string
  4361. Return: AL = 24h (the '$' terminating the string, despite official docs which
  4362.         state that nothing is returned) (at least DOS 3.3-5.0)
  4363. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  4364.     standard output is always the screen under DOS 1.x, but may be
  4365.       redirected under DOS 2+
  4366.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  4367. SeeAlso: AH=02h,AH=06h"OUTPUT"
  4368. --------D-210A-------------------------------
  4369. INT 21 - DOS 1+ - BUFFERED INPUT
  4370.     AH = 0Ah
  4371.     DS:DX -> buffer (see below)
  4372. Return: buffer filled with user input
  4373. Notes:    ^C/^Break are checked, and INT 23 is called if either detected
  4374.     reads from standard input, which may be redirected under DOS 2+
  4375.     if the maximum buffer size (see below) is set to 00h, this call returns
  4376.       immediately without reading any input
  4377. SeeAlso: AH=0Ch,INT 2F/AX=4810h
  4378.  
  4379. Format of input buffer:
  4380. Offset    Size    Description
  4381.  00h    BYTE    maximum characters buffer can hold
  4382.  01h    BYTE    (input) number of chars from last input which may be recalled
  4383.         (return) number of characters actually read, excluding CR
  4384.  02h  N BYTEs    actual characters read, including the final carriage return
  4385. --------K-210A00-----------------------------
  4386. INT 21 - WCED v1.6 - INSTALLATION CHECK
  4387.     AX = 0A00h
  4388.     DS:DX -> 6-byte buffer whose first two bytes must be 00h
  4389. Return: buffer offset 02h-05h filled with "Wced" if installed
  4390. Program: WCED is a free command-line editor and history utility by Stuart
  4391.       Russell
  4392. SeeAlso: AH=FFh"CED"
  4393. --------D-210B-------------------------------
  4394. INT 21 - DOS 1+ - GET STDIN STATUS
  4395.     AH = 0Bh
  4396. Return: AL = 00h if no character available
  4397.        = FFh if character is available
  4398. Notes:    ^C/^Break are checked, and INT 23 is called if either pressed
  4399.     standard input is always the keyboard under DOS 1.x, but may be
  4400.       redirected under DOS 2+
  4401.     if the interim console flag is set (see AX=6301h), this function
  4402.       returns AL=FFh if a partially-formed double-byte character is
  4403.       available
  4404. SeeAlso: AH=06h"INPUT",AX=4406h
  4405. --------v-210B56-----------------------------
  4406. INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
  4407.     AX = 0B56h
  4408. Return: AX = 4952h if resident
  4409. SeeAlso: AX=0D20h
  4410. --------D-210C-------------------------------
  4411. INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
  4412.     AH = 0Ch
  4413.     AL = STDIN input function to execute after flushing buffer
  4414.     other registers as appropriate for the input function
  4415. Return: as appropriate for the specified input function
  4416. Note:    if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
  4417.       no input is attempted
  4418. SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
  4419. --------D-210D-------------------------------
  4420. INT 21 - DOS 1+ - DISK RESET
  4421.     AH = 0Dh
  4422. Notes:    writes all modified disk buffers to disk, but does not update directory
  4423.       information (that is only done when files are closed or a SYNC call
  4424.       is issued)
  4425. SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
  4426. --------v-210D20-----------------------------
  4427. INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
  4428.     AX = 0D20h
  4429. Return: AX = 1971h if resident
  4430. SeeAlso: AX=0B56h,AH=30h/DX=ABCDh
  4431. --------D-210E-------------------------------
  4432. INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
  4433.     AH = 0Eh
  4434.     DL = new default drive (00h = A:, 01h = B:, etc)
  4435. Return: AL = number of potentially valid drive letters
  4436. Notes:    under Novell NetWare, the return value is always 32, the number of
  4437.       drives that NetWare supports
  4438.     under DOS 3+, the return value is the greatest of 5, the value of
  4439.       LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
  4440.     on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
  4441.       may be accessed as either A: or B:
  4442.     otherwise, the return value is the highest drive actually present
  4443.     DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
  4444.       and 3+ a maximum of 26 drives
  4445. SeeAlso: AH=19h,AH=3Bh,AH=DBh
  4446. --------D-210F-------------------------------
  4447. INT 21 - DOS 1+ - OPEN FILE USING FCB
  4448.     AH = 0Fh
  4449.     DS:DX -> unopened File Control Block (see below)
  4450. Return: AL = status
  4451.         00h successful
  4452.         FFh file not found or access denied
  4453. Notes:    (DOS 3.1+) file opened for read/write in compatibility mode
  4454.     an unopened FCB has the drive, filename, and extension fields filled
  4455.       in and all other bytes cleared
  4456.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4457.     DR-DOS checks password attached with AX=4303h
  4458. SeeAlso: AH=10h,AH=16h,AH=3Dh,4303h
  4459.  
  4460. Format of File Control Block:
  4461. Offset    Size    Description
  4462.  -7    BYTE    extended FCB if FFh
  4463.  -6   5 BYTEs    reserved
  4464.  -1    BYTE    file attribute if extended FCB
  4465.  00h    BYTE    drive number (0 = default, 1 = A, etc)
  4466.  01h  8 BYTEs    blank-padded file name 
  4467.  09h  3 BYTEs    blank-padded file extension
  4468.  0Ch    WORD    current block number
  4469.  0Eh    WORD    logical record size
  4470.  10h    DWORD    file size
  4471.  14h    WORD    date of last write (see AX=5700h)
  4472.  16h    WORD    time of last write (see AX=5700h) (DOS 1.1+)
  4473.  18h  8 BYTEs    reserved (see below)
  4474.  20h    BYTE    record within current block
  4475.  21h    DWORD    random access record number (if record size is > 64 bytes, high
  4476.         byte is omitted)
  4477. Note:    to use an extended FCB, you must specify the address of the FFh flag at
  4478.       offset -7, rather than the address of the drive number field
  4479.  
  4480. Format of reserved field for DOS 1.0:
  4481. Offset    Size    Description
  4482.  16h    WORD    location in directory (if high byte = FFh, low byte is device
  4483.         ID)
  4484.  18h    WORD    number of first cluster in file
  4485.  1Ah    WORD    current absolute cluster number on disk
  4486.  1Ch    WORD    current relative cluster number within file
  4487.         (0 = first cluster of file, 1 = second cluster, etc.)
  4488.  1Eh    BYTE    dirty flag (00h = not dirty)
  4489.  1Fh    BYTE    unused
  4490.  
  4491. Format of reserved field for DOS 1.10-1.25:
  4492. Offset    Size    Description
  4493.  18h    BYTE    bit 7: set if logical device
  4494.         bit 6: not dirty
  4495.         bits 5-0: disk number or logical device ID
  4496.  19h    WORD    starting cluster number on disk
  4497.  1Bh    WORD    current absolute cluster number on disk
  4498.  1Dh    WORD    current relative cluster number within file
  4499.  1Fh    BYTE    unused
  4500.  
  4501. Format of reserved field for DOS 2.x:
  4502. Offset    Size    Description
  4503.  18h    BYTE    bit 7: set if logical device
  4504.         bit 6: set if open???
  4505.         bits 5-0: ???
  4506.  19h    WORD    starting cluster number on disk
  4507.  1Bh    WORD    ???
  4508.  1Dh    BYTE    ???
  4509.  1Eh    BYTE    ???
  4510.  1Fh    BYTE    ???
  4511.  
  4512. Format of reserved field for DOS 3.x:
  4513. Offset    Size    Description
  4514.  18h    BYTE    number of system file table entry for file
  4515.  19h    BYTE    attributes
  4516.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  4517.               01 = SHARE.EXE not loaded, character device
  4518.               10 = SHARE.EXE loaded, remote file
  4519.               11 = SHARE.EXE loaded, local file or device
  4520.         bits 5-0: low six bits of device attribute word
  4521. ---SHARE.EXE loaded, local file---
  4522.  1Ah    WORD    starting cluster of file on disk
  4523.  1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record (see AH=52h)
  4524.  1Eh    BYTE    file attribute
  4525.  1Fh    BYTE    ???
  4526. ---SHARE.EXE loaded, remote file---
  4527.  1Ah    WORD    number of sector containing directory entry
  4528.  1Ch    WORD    relative cluster within file of last cluster accessed
  4529.  1Eh    BYTE    absolute cluster number of last cluster accessed
  4530.  1Fh    BYTE    ???
  4531. ---SHARE.EXE not loaded---
  4532.  1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
  4533.  1Bh    WORD    starting cluster of file
  4534.  1Dh    WORD    number of sector containing directory entry
  4535.  1Fh    BYTE    number of directory entry within sector
  4536. Note:    if FCB opened on character device, DWORD at 1Ah is set to the address
  4537.       of the device driver header, then the BYTE at 1Ah is overwritten.
  4538.  
  4539. Format of reserved field for DOS 5.0:
  4540. Offset    Size    Description
  4541.  18h    BYTE    number of system file table entry for file
  4542.  19h    BYTE    attributes
  4543.         bits 7,6: 00 = SHARE.EXE not loaded, disk file
  4544.               01 = SHARE.EXE not loaded, character device
  4545.               10 = SHARE.EXE loaded, remote file
  4546.               11 = SHARE.EXE loaded, local file or device
  4547.         bits 5-0: low six bits of device attribute word
  4548. ---SHARE.EXE loaded, local file---
  4549.  1Ah    WORD    starting cluster of file on disk
  4550.  1Ch    WORD    unique sequence number of sharing record
  4551.  1Eh    BYTE    file attributes
  4552.  1Fh    BYTE    unused???
  4553. ---SHARE.EXE loaded, remote file---
  4554.  1Ah    WORD    network handle
  4555.  1Ch    DWORD    network ID
  4556. ---SHARE not loaded, local device---
  4557.  1Ah    DWORD    pointer to device driver header
  4558.  1Eh  2 BYTEs    unused???
  4559. ---SHARE not loaded, local file---
  4560.  1Ah    BYTE    extra info
  4561.          bit 7: read-only attribute from SFT
  4562.         bit 6: archive attribute from SFT
  4563.         bits 5-0: high bits of sector number
  4564.  1Bh    WORD    starting cluster of file
  4565.  1Dh    WORD    low word of sector number containing directory entry
  4566.  1Fh    BYTE    number of directory entry within sector
  4567. --------D-2110-------------------------------
  4568. INT 21 - DOS 1+ - CLOSE FILE USING FCB
  4569.     AH = 10h
  4570.     DS:DX -> File Control Block (see AH=0Fh)
  4571. Return: AL = status
  4572.         00h successful
  4573.         FFh failed
  4574. Notes:    a successful close forces all disk buffers used by the file to be
  4575.       written and the directory entry to be updated
  4576.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4577. SeeAlso: AH=0Fh,AH=16h,AH=3Eh
  4578. --------D-2111-------------------------------
  4579. INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
  4580.     AH = 11h
  4581.     DS:DX -> unopened FCB (see AH=0Fh), may contain '?' wildcards
  4582. Return: AL = status
  4583.         00h successful
  4584.         [DTA] unopened FCB for first matching file
  4585.         FFh no matching filename, or bad FCB
  4586. Notes:    the type of the returned FCB depends on whether the input FCB was a
  4587.       normal or an extended FCB
  4588.     the data returned in the DTA is actually the drive number (or extended
  4589.       FCB header and drive number) followed by the file's directory entry
  4590.       (see below); this format happens to be compatible with an unopened
  4591.       FCB
  4592.     for extended FCBs with search attribute 08h, the volume label (if any)
  4593.       will be returned even if the current directory is not the root dir.
  4594.     DOS 3+ also allows the '*' wildcard
  4595.     the search FCB must not be modified if AH=12h will be used to continue
  4596.       searching; DOS 3.3 has set the following parts of the FCB:
  4597.          0Ch    BYTE    ???
  4598.          0Dh    WORD    directory entry number of matching file
  4599.          0Fh    WORD    cluster number of current directory
  4600.          11h  4 BYTEs    ???
  4601.          15h    BYTE    drive number (1=A:)
  4602.     this function is used by many copy protection schemes to obtain the
  4603.       starting cluster of a file
  4604. SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
  4605.  
  4606. Format of directory entry:
  4607. Offset    Size    Description
  4608.  00h  8 BYTEs    blank-padded filename
  4609.  08h  3 BYTEs    blank-padded file extension
  4610.  0Bh    BYTE    attributes
  4611.  0Ch 10 BYTEs    reserved
  4612.          used by DR-DOS to store file password
  4613.  16h    WORD    time of creation or last update (see AX=5700h)
  4614.  18h    WORD    date of creation or last update (see AX=5700h)
  4615.  1Ah    WORD    starting cluster number
  4616.  1Ch    DWORD    file size
  4617. --------D-2112-------------------------------
  4618. INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
  4619.     AH = 12h
  4620.     DS:DX -> unopened FCB (see AH=0Fh)
  4621. Return: AL = status
  4622.         00h successful
  4623.         [DTA] = unopened FCB
  4624.         FFh no more matching filenames
  4625. Note:    (see AH=11h)
  4626.     assumes that successful FindFirst executed on search FCB before call
  4627. SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
  4628. --------D-2113-------------------------------
  4629. INT 21 - DOS 1+ - DELETE FILE USING FCB
  4630.     AH = 13h
  4631.     DS:DX -> unopened FCB (see AH=0Fh), filename filled with template for
  4632.         deletion ('?' wildcards allowed)
  4633. Return: AL = status
  4634.         00h one or more files successfully deleted
  4635.         FFh no matching files or all were read-only or locked
  4636. Notes:    DOS 1.25+ deletes everything in the current directory (including
  4637.       subdirectories) and sets the first byte of the name to 00h (entry
  4638.       never used) instead of E5h if called on an extended FCB with
  4639.       filename '???????????' and bits 0-4 of the attribute set (bits 1 and
  4640.       2 for DOS 1.x).  This may have originally been an optimization to
  4641.       minimize directory searching after a mass deletion (DOS 1.25+ stop
  4642.       the directory search upon encountering a never-used entry), but can
  4643.       corrupt the filesystem under DOS 2+ because subdirectories are
  4644.       removed without deleting the files they contain.
  4645.     currently-open files should not be deleted
  4646.     MS-DOS allows deletion of read-only files with an extended FCB, whereas
  4647.       Novell NetWare does not
  4648. SeeAlso: AH=41h,INT 2F/AX=1113h
  4649. --------D-2114-------------------------------
  4650. INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
  4651.     AH = 14h
  4652.     DS:DX -> opened FCB (see AH=0Fh)
  4653. Return: AL = status
  4654.         00h successful
  4655.         01h end of file (no data)
  4656.         02h segment wrap in DTA
  4657.         03h end of file, partial record read
  4658.     [DTA] = record read from file
  4659. Notes:    reads a record of the size specified in the FCB beginning at the
  4660.       current file position, then updates the current block and current
  4661.       record fields in the FCB
  4662.     if a partial record was read, it is zero-padded to the full size
  4663.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4664. SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh,INT 2F/AX=1108h
  4665. --------D-2115-------------------------------
  4666. INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
  4667.     AH = 15h
  4668.     DS:DX -> opened FCB (see AH=0Fh)
  4669.     [DTA] = record to write
  4670. Return: AL = status
  4671.         00h successful
  4672.         01h disk full
  4673.         02h segment wrap in DTA
  4674. Notes:    writes a record of the size specified in the FCB beginning at the
  4675.       current file position, then updates the current block and current
  4676.       record fields in the FCB
  4677.     if less than a full sector is written, the data is placed in a DOS
  4678.       buffer to be written out at a later time
  4679.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4680. SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
  4681. --------D-2116-------------------------------
  4682. INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
  4683.     AH = 16h
  4684.     DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
  4685. Return: AL = status
  4686.         00h successful
  4687.         FFh directory full or file exists and is read-only or locked
  4688. Notes:    if file already exists, it is truncated to zero length
  4689.     if an extended FCB is used, the file is given the attribute in the
  4690.       FCB; this is how to create a volume label in the disk's root dir
  4691.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4692. SeeAlso: AH=0Fh,AH=10h,AH=3Ch
  4693. --------D-2117-------------------------------
  4694. INT 21 - DOS 1+ - RENAME FILE USING FCB
  4695.     AH = 17h
  4696.     DS:DX -> modified FCB (see also AH=0Fh)
  4697.         the old filename ('?' wildcards OK) is in the standard location
  4698.         while the new filename ('?' wildcards OK) is stored in the 11
  4699.         bytes beginning at offset 11h
  4700. Return:    AL = status
  4701.         00h successfully renamed
  4702.         FFh no matching files,file is read-only, or new name already exists
  4703. Notes:    subdirectories may be renamed using an extended FCB with the
  4704.       appropriate attribute, as may volume labels
  4705.     DR-DOS checks password attached with AX=4303h before permitting rename
  4706. SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
  4707. --------D-2118-------------------------------
  4708. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  4709.     AH = 18h
  4710. Return: AL = 00h
  4711. Note:    corresponds to the CP/M BDOS function "get bit map of logged drives",
  4712.       which is meaningless under MS-DOS
  4713. SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h
  4714. --------D-2119-------------------------------
  4715. INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
  4716.     AH = 19h
  4717. Return: AL = drive (00h = A:, 01h = B:, etc)
  4718. Note:    Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
  4719.       from a particular location every time it starts a command to
  4720.       determine when to issue an automatic EOJ
  4721. SeeAlso: AH=0Eh,AH=47h,AH=BBh
  4722. --------D-211A-------------------------------
  4723. INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
  4724.     AH = 1Ah
  4725.     DS:DX -> Disk Transfer Area (DTA)
  4726. Notes:    the DTA is set to PSP:0080h when a program is started
  4727.     under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
  4728. SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
  4729. --------D-211B-------------------------------
  4730. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
  4731.     AH = 1Bh
  4732. Return: AL = sectors per cluster (allocation unit)
  4733.     CX = bytes per sector
  4734.     DX = total number of clusters
  4735.     DS:BX -> media ID byte (see below)
  4736. Note:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  4737.       versions return a pointer to a copy of the FAT's ID byte
  4738. SeeAlso: AH=1Ch,AH=36h
  4739.  
  4740. Values for media ID byte:
  4741.  FFh    floppy, double-sided, 8 sectors per track (320K)
  4742.  FEh    floppy, single-sided, 8 sectors per track (160K)
  4743.  FDh    floppy, double-sided, 9 sectors per track (360K)
  4744.  FCh    floppy, single-sided, 9 sectors per track (180K)
  4745.  F9h    floppy, double-sided, 15 sectors per track (1.2M)
  4746.  F8h    hard disk
  4747.  F0h    other
  4748. --------D-211C-------------------------------
  4749. INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
  4750.     AH = 1Ch
  4751.     DL = drive (00h = default, 01h = A:, etc)
  4752. Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
  4753.     CX = bytes per sector
  4754.     DX = total number of clusters
  4755.     DS:BX -> media ID byte (see AH=1Bh)
  4756. Notes:    under DOS 1.x, DS:BX points at an actual copy of the FAT; later
  4757.       versions return a pointer to a copy of the FAT's ID byte
  4758.     on a DBLSPACE drive, the total number of clusters is based on the
  4759.       estimated compression ratio
  4760. SeeAlso: AH=1Bh,AH=36h
  4761. --------D-211D-------------------------------
  4762. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  4763.     AH = 1Dh
  4764. Return: AL = 00h
  4765. Note:    corresponds to the CP/M BDOS function "get bit map of read-only
  4766.       drives", which is meaningless under MS-DOS
  4767. SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
  4768. --------D-211E-------------------------------
  4769. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  4770.     AH = 1Eh
  4771. Return: AL = 00h
  4772. Note:    corresponds to the CP/M BDOS function "set file attributes" which was
  4773.      meaningless under MS-DOS 1.x
  4774. SeeAlso: AH=18h,AH=1Dh,AH=20h
  4775. --------D-211F-------------------------------
  4776. INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
  4777.     AH = 1Fh
  4778. Return: AL = status
  4779.         00h successful
  4780.         DS:BX -> Drive Parameter Block (DPB) (see below for DOS 1.x,
  4781.             AH=32h for DOS 2+)
  4782.         FFh invalid drive
  4783. Note:    this call was undocumented prior to the release of DOS 5.0; however,
  4784.       only the DOS 4+ version of the DPB has been documented
  4785. SeeAlso: AH=32h
  4786.  
  4787. Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
  4788. Offset    Size    Description
  4789.  00h    BYTE    sequential device ID
  4790.  01h    BYTE    logical drive number (0=A:)
  4791.  02h    WORD    bytes per sector
  4792.  04h    BYTE    highest sector number within a cluster
  4793.  05h    BYTE    shift count to convert clusters into sectors
  4794.  06h    WORD    starting sector number of first FAT
  4795.  08h    BYTE    number of copies of FAT
  4796.  09h    WORD    number of directory entries
  4797.  0Bh    WORD    number of first data sector
  4798.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  4799.  0Fh    BYTE    sectors per FAT
  4800.  10h    WORD    starting sector of directory
  4801.  12h    WORD    address of allocation table
  4802. Note:    the DOS 1.0 table is the same except that the first and last fields
  4803.       are missing; see INT 21/AH=32h for the DOS 2+ version
  4804. --------D-2120-------------------------------
  4805. INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
  4806.     AH = 20h
  4807. Return: AL = 00h
  4808. Note:    corresponds to the CP/M BDOS function "get/set default user
  4809.       (sublibrary) number", which is meaningless under MS-DOS
  4810. SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
  4811. --------D-2121-------------------------------
  4812. INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
  4813.     AH = 21h
  4814.     DS:DX -> opened FCB (see AH=0Fh)
  4815. Return: AL = status
  4816.         00h successful    
  4817.         01h end of file, no data read
  4818.         02h segment wrap in DTA, no data read
  4819.         03h end of file, partial record read
  4820.     [DTA] = record read from file
  4821. Notes:    the record is read from the current file position as specified by the
  4822.       random record and record size fields of the FCB
  4823.     the file position is not updated after reading the record
  4824.     if a partial record is read, it is zero-padded to the full size
  4825.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4826. SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh
  4827. --------D-2122-------------------------------
  4828. INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
  4829.     AH = 22h
  4830.     DS:DX -> opened FCB (see AH=0Fh)
  4831.     [DTA] = record to write
  4832. Return: AL = status
  4833.         00h successful
  4834.         01h disk full
  4835.         02h segment wrap in DTA
  4836. Notes:    the record is written to the current file position as specified by the
  4837.       random record and record size fields of the FCB
  4838.     the file position is not updated after writing the record
  4839.     if the record is located beyond the end of the file, the file is
  4840.       extended but the intervening data remains uninitialized
  4841.     if the record only partially fills a disk sector, it is copied to a
  4842.       DOS disk buffer to be written out to disk at a later time
  4843.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4844. SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
  4845. --------D-2123-------------------------------
  4846. INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
  4847.     AH = 23h
  4848.     DS:DX -> unopened FCB (see AH=0Fh), wildcards not allowed
  4849. Return: AL = status
  4850.         00h successful (matching file found)
  4851.         FCB random record field filled with size in records, rounded up
  4852.         to next full record
  4853.         FFh failed (no matching file found)
  4854. Notes:    not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4855.     MS-DOS returns nonsense is the FCB record number field is set to a very
  4856.       large positive number, and status FFh if negative; DR-DOS returns the
  4857.       correct file size in both cases
  4858. SeeAlso: AH=42h
  4859. --------D-2124-------------------------------
  4860. INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
  4861.     AH = 24h
  4862.     DS:DX -> opened FCB (see AH=0Fh)
  4863. Notes:    computes the random record number corresponding to the current record
  4864.       number and record size, then stores the result in the FCB
  4865.     normally used when switching from sequential to random access
  4866.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  4867. SeeAlso: AH=21h,AH=27h,AH=42h
  4868. --------D-2125-------------------------------
  4869. INT 21 - DOS 1+ - SET INTERRUPT VECTOR
  4870.     AH = 25h
  4871.     AL = interrupt number
  4872.     DS:DX -> new interrupt handler
  4873. Notes:    this function is preferred over direct modification of the interrupt
  4874.       vector table
  4875.     some DOS extenders place an API on this function, as it is not
  4876.       directly meaningful in protected mode
  4877.     under DR-DOS 5.0+, this function does not use any of the DOS-internal
  4878.       stacks and may thus be called at any time
  4879.     Novell NetWare (except the new DOS Requester) monitors the offset of
  4880.       any INT 24 set, and if equal to the value at startup, substitutes
  4881.       its own handler to allow handling of network errors; this introduces
  4882.       the potential bug that any program whose INT 24 handler offset
  4883.       happens to be the same as COMMAND.COM's will not have its INT 24
  4884.       handler installed
  4885. SeeAlso: AX=2501h,AH=35h
  4886. --------E-212501-----------------------------
  4887. INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES 
  4888.     AX = 2501h
  4889.     SS = application's original SS or DS (FlashTek X-32VM)
  4890. Return: CF clear if successful
  4891.     CF set on error
  4892.         caller is operating on X-32 stack (FlashTek X-32VM)
  4893. Notes:    Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
  4894.       system calls.     Only available when directly using 386/DOS-Extender or
  4895.       a compatible DOS extender, or when using a product that was created
  4896.       using 386-DOS/Extender or a compatible
  4897.     this function is also supported by FlashTek X-32VM
  4898. SeeAlso: AH=30h"Phar Lap"
  4899. --------E-212502-----------------------------
  4900. INT 21 - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
  4901.     AX = 2502h
  4902.     CL = interrupt number
  4903. Return:    CF clear
  4904.     ES:EBX = CS:EIP of protected-mode interrupt handler
  4905. Note:    this function is also supported by FlashTek X-32VM
  4906. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
  4907. --------E-212503-----------------------------
  4908. INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
  4909.     AX = 2503h
  4910.     CL = interrupt number
  4911. Return: CF clear
  4912.     EBX = CS:IP of real-mode interrupt handler
  4913. Note:    this function is also supported by FlashTek X-32VM
  4914. SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
  4915. --------E-212504-----------------------------
  4916. INT 21 - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
  4917.     AX = 2504h
  4918.     CL = interrupt number
  4919.     DS:EDX = CS:EIP of protected-mode interrupt handler
  4920. Return: CF clear
  4921. Note:    this function is also supported by FlashTek X-32VM
  4922. SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
  4923. --------E-212505-----------------------------
  4924. INT 21 - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
  4925.     AX = 2505h
  4926.     CL = interrupt number
  4927.     EBX = CS:IP of real-mode interrupt handler
  4928. Return: CF clear
  4929. Note:    this function is also supported by FlashTek X-32VM
  4930. SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
  4931. --------E-212506-----------------------------
  4932. INT 21 - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CONTRL IN PROT MODE
  4933.     AX = 2506h
  4934.     CL = interrupt number
  4935.     DS:EDX = CS:EIP of protected-mode interrupt handler
  4936. Return: CF clear
  4937. Notes:    this function modifies both the real-mode low-memory interrupt
  4938.       vector table and the protected-mode Interrupt Descriptor Table (IDT)
  4939.     interrupts occurring in real mode are resignaled in protected mode
  4940.     this function is also supported by FlashTek X-32VM
  4941. --------E-212507-----------------------------
  4942. INT 21 - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
  4943.     AX = 2507h
  4944.     CL = interrupt numbern
  4945.     DS:EDX = CS:EIP of protected-mode interrupt handler
  4946.     EBX = CS:IP of real-mode interrupt handler
  4947. Return: CF clear
  4948. Notes:    interrupts are disabled until both vectors have been modified
  4949.     this function is also supported by FlashTek X-32VM
  4950. SeeAlso: AX=2504h,AX=2505h
  4951. --------E-212508-----------------------------
  4952. INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
  4953.     AX = 2508h
  4954.     BX = segment selector
  4955. Return: CF clear if successful
  4956.         ECX = linear base address of segment
  4957.     CF set if invalid segment selector
  4958. Note:    this function is also supported by FlashTek X-32VM
  4959. SeeAlso: AX=2509h
  4960. --------E-212509-----------------------------
  4961. INT 21 - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
  4962.     AX = 2509h
  4963.     EBX = linear address to convert
  4964. Return: CF clear if successful
  4965.         ECX = physical address (carry flag clear)
  4966.     CF set if linear address not mapped in page tables
  4967. SeeAlso: AX=2508h
  4968. --------E-212509-----------------------------
  4969. INT 21 - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
  4970.     AX = 2509h
  4971. Return: CF clear
  4972.     EAX high word = default DS
  4973.     AX = alias for 16-bit data segment
  4974.     BX = real mode code segment
  4975.     EDX high word = selector covering full 4GB address space
  4976.     DX = default SS
  4977.     ESI high word = PSP selector
  4978.     SI = environment selector
  4979. --------E-21250A-----------------------------
  4980. INT 21 - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
  4981.     AX = 250Ah
  4982.     ES = segment selector in the Local Descriptor Table (LDT) of segment
  4983.          to modify
  4984.     EBX = physical base address of memory to map (multiple of 4K)
  4985.     ECX = number of physical 4K pages to map
  4986. Return: CF clear if successful
  4987.         EAX = 32-bit offset in segment of mapped memory
  4988.     CF set on error
  4989.         EAX = error code
  4990.         08h insufficient memory to create page tables
  4991.         09h invalid segment selector
  4992. SeeAlso: INT 31/AX=0800h
  4993. --------E-21250C-----------------------------
  4994. INT 21 - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
  4995.     AX = 250Ch
  4996. Return: CF clear
  4997.     AL = base interrupt vector for IRQ0-IRQ7
  4998.     AH = base interrupt vector for IRQ8-IRQ15
  4999.     BL = interrupt vector for BIOS print screen function (Phar Lap only)
  5000. Note:    this function is also supported by FlashTek X-32VM
  5001. SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
  5002. --------E-21250D-----------------------------
  5003. INT 21 - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
  5004.     AX = 250Dh
  5005. Return: CF clear
  5006.     EAX = CS:IP of real-mode callback procedure that will call through
  5007.         from real mode to a protected-mode routine
  5008.     EBX = 32-bit real-mode address of intermode call data buffer
  5009.     ECX = size in bytes of intermode call data buffer
  5010.     ES:EDX = protected-mode address of intermode call data buffer
  5011. Notes:    this function is also supported by FlashTek X-32VM
  5012.     X-32VM guarantees the intermode buffer to be at least 4 KB
  5013. SeeAlso: AX=250Eh
  5014.  
  5015. Call real-mode callback with:
  5016.     STACK:    DWORD    offset to protected-mode code
  5017.         WORD    placeholder for protected-mode CS
  5018.         DWORD    pointer to selector structure (see below)
  5019.             or 0000h:0000h for defaults
  5020.         var    parameters for protected-mode procedure
  5021. Return: via FAR return
  5022.  
  5023. Format of selector structure:
  5024. Offset    Size    Description
  5025.  00h    WORD    protected-mode GS selector
  5026.  02h    WORD    protected-mode FS selector
  5027.  04h    WORD    protected-mode ES selector
  5028.  06h    WORD    protected-mode DS selector
  5029. --------E-21250E-----------------------------
  5030. INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
  5031.     AX = 250Eh
  5032.     EBX = CS:IP of real-mode procedure to call
  5033.     ECX = number of two-byte words to copy from protected-mode stack
  5034.           to real-mode stack
  5035. Return: CF clear if successful
  5036.         all segment registers unchanged
  5037.         all general registers contain values set by real-mode procedure
  5038.         all other flags set as they were left by real-mode procedure
  5039.         stack unchanged
  5040.     CF set on error
  5041.         EAX = error code
  5042.         01h not enough real-mode stack space
  5043. Note:    this function is also supported by FlashTek X-32VM; under X-32VM, the
  5044.       call will fail if ECX > 0000003Fh
  5045. SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
  5046. --------E-21250F-----------------------------
  5047. INT 21 - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
  5048.     AX = 250Fh
  5049.     ES:EBX = 48-bit protected-mode address to convert
  5050. Return: CF clear if successful (address < 1MB)
  5051.         ECX = 32-bit real-mode MS-DOS address
  5052.     CF set on error (address >= 1MB)
  5053.         ECX = linear address
  5054. Note:    this function is also supported by FlashTek X-32VM
  5055. SeeAlso: AX=2510h
  5056. --------E-212510-----------------------------
  5057. INT 21 - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
  5058.     AX = 2510h
  5059.     EBX = CS:IP of real-mode procedure to call
  5060.     ECX = number of two-byte words to copy to protected-mode stack to
  5061.           real-mode stack
  5062.     DS:EDX -> pointer to parameter block (see below)
  5063. Return: CF clear if successful
  5064.         all segment registers unchanged,
  5065.         EDX unchanged
  5066.         all other general registers contain values set by real-mode proc
  5067.         all other flags are set as they were left by real-mode procedure
  5068.         real-mode register values are returned in the parameter block
  5069.     CF set on error
  5070.         EAX = error code
  5071.         01h not enough real-mode stack space
  5072. Note:    unlike most of the preceding 25xxh functions, this one is not
  5073.       supported by FlashTek X-32VM
  5074. SeeAlso: AX=250Eh,AX=250Fh
  5075.  
  5076. Format of parameter block:
  5077. Offset    Size    Description
  5078.  00h    WORD    real-mode DS value
  5079.  02h    WORD    real-mode ES value
  5080.  04h    WORD    real-mode FS value
  5081.  06h    WORD    real-mode GS value
  5082.  08h    DWORD    real-mode EAX value
  5083.  0Ch    DWORD    real-mode EBX value
  5084.  10h    DWORD    real-mode ECX value
  5085.  14h    DWORD    real-mode EDX value
  5086. --------E-212511-----------------------------
  5087. INT 21 - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
  5088.     AX = 2511h
  5089.     DS:EDX -> parameter block (see below)
  5090. Return: all segment registers unchanged
  5091.     EDX unchanged
  5092.     all other registers contain values set by the real-mode int handler
  5093.     the flags are set as they were left by the real-mode interrupt handler
  5094.     real-mode register values are returned in the parameter block
  5095. Note:    this function is also supported by FlashTek X-32VM
  5096. SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
  5097.  
  5098. Format of parameter block:
  5099. Offset    Size    Description
  5100.  00h    WORD    interrupt number
  5101.  02h    WORD    real-mode DS value
  5102.  04h    WORD    real-mode ES value
  5103.  06h    WORD    real-mode FS value
  5104.  08h    WORD    real-mode GS value
  5105.  0Ah    DWORD    real-mode EAX value
  5106.  0Eh    DWORD    real-mode EDX value
  5107. Note: all other real-mode values set from protected-mode registers
  5108. --------E-212512-----------------------------
  5109. INT 21 - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
  5110.     AX = 2512h
  5111.     DS:EDX -> pointer to ASCIIZ program name
  5112.     ES:EBX -> pointer to parameter block (see below)
  5113.     ECX = size in bytes of LDT buffer
  5114. Return: CF clear if successful
  5115.         EAX = number of segment descriptors in LDT
  5116.     CF set on error
  5117.         EAX = error code
  5118.         02h file not found or path invalid
  5119.         05h access denied
  5120.         08h insufficient memory
  5121.         0Ah environment invalid
  5122.         0Bh invalid file format
  5123.         80h LDT too small
  5124.  
  5125. Format of parameter block:
  5126. Offset    Size    Description
  5127. Input:
  5128.  00h    DWORD    32-bit offset of environment string
  5129.  04h    WORD    segment of environment string
  5130.  06h    DWORD    32-bit offset of command-tail string
  5131.  0Ah    WORD    segment of command-tail string
  5132.  0Ch    DWORD    32-bit offset of LDT buffer (size in ECX)
  5133.  10h    WORD    segment of LDT buffer
  5134. Output:
  5135.  12h    WORD    real-mode paragraph address of PSP (see also AH=26h)
  5136.  14h    WORD    real/protected mode flag
  5137.         0000h  real mode
  5138.         0001h  protected mode
  5139.  16h    DWORD    initial EIP value
  5140.  1Ah    WORD    initial CS value
  5141.  1Ch    DWORD    initial ESP value
  5142.  20h    WORD    initial SS value
  5143.  22h    WORD    initial DS value
  5144.  24h    WORD    initial ES value
  5145.  26h    WORD    initial FS value
  5146.  28h    WORD    initial GS value
  5147. --------E-212513-----------------------------
  5148. INT 21 - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
  5149.     AX = 2513h
  5150.     BX = segment selector of descriptor in GDT or LDT
  5151.     CL = access-rights byte for alias descriptor
  5152.     CH = use-type bit (USE16 or USE32) for alias descriptor
  5153. Return: CF clear if successful
  5154.         AX = segment selector for created alias
  5155.     CF set on error
  5156.         EAX = error code
  5157.         08h insufficient memory (can't grow LDT)
  5158.         09h invalid segment selector in BX
  5159. --------E-212514-----------------------------
  5160. INT 21 - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
  5161.     AX = 2514h
  5162.     BX = segment selector of descriptor in GDT or LDT
  5163.     CL = new access-rights byte 
  5164.     CH = new use-type bit (USE16 or USE32)
  5165. Return: CF clear if successful
  5166.     CF set on error
  5167.         EAX = error code
  5168.         09h invalid selector in BX
  5169. SeeAlso: AX=2515h,INT 31/AX=0009h
  5170. --------E-212515-----------------------------
  5171. INT 21 - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
  5172.     AX = 2515h
  5173.     BX = segment selector of descriptor in GDT or LDT
  5174. Return: CF clear if successful
  5175.         CL = access-rights byte for segment
  5176.         CH = use-type bit (USE16 or USE32)
  5177.     ECX<16-31> destroyed
  5178.     CF set on error
  5179.         EAX = error code
  5180.         09h invalid segment selector in BX
  5181. SeeAlso: AX=2514h
  5182. --------E-212516-----------------------------
  5183. INT 21 - Phar Lap 386/DOS-Extender - FREE ALL MEMORY OWNED BY LDT
  5184.     AX = 2516h
  5185.     ???
  5186. Return: ???
  5187. --------E-212517-----------------------------
  5188. INT 21 - Phar Lap 386/DOS-Extender - GET INFO ON DOS DATA BUFFER
  5189.     AX = 2517h
  5190.     ???
  5191. Return: ???
  5192. --------E-212518-----------------------------
  5193. INT 21 - Phar Lap 386/DOS-Extender - SPECIFY HANDLER FOR MOVED SEGMENTS
  5194.     AX = 2518h
  5195.     ???
  5196. Return: ???
  5197. --------E-212519-----------------------------
  5198. INT 21 - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
  5199.     AX = 2519h
  5200. Return: CF clear
  5201.     EAX = error code
  5202.         0000h  no error
  5203.         0001h  out of physical memory
  5204.         0002h  out of swap space (unable to grow swap file)
  5205.         0003h  out of LDT entries and unable to grow LDT
  5206.         0004h  unable to change extended memory allocation mark
  5207.         FFFFFFFFh    paging disabled
  5208. Note:    VMM is the Virtual Memory Manager option
  5209. --------E-21251A-----------------------------
  5210. INT 21 - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
  5211.     AX = 251Ah
  5212.     EDX = number of 4k pages to lock
  5213.     if BL = 00h
  5214.         ECX = linear address of first page to lock
  5215.     if BL = 01h
  5216.         ES:ECX -> pointer to first page to lock
  5217. Return: CF clear if successful
  5218.     CF set on error
  5219.         EAX = error code
  5220.         08h insufficient memory
  5221.         09h invalid address range
  5222. SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
  5223. --------E-21251B-----------------------------
  5224. INT 21 - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
  5225.     AX = 251Bh
  5226.     EDX = number of pages to unlock
  5227.     if BL = 00h
  5228.         ECX = linear address of first page to unlock
  5229.     if BL = 01h
  5230.         ES:ECX -> pointer to first page to unlock
  5231. Return: CF clear if successful
  5232.     CF set on error
  5233.         EAX = error code
  5234.         09h invalid address range
  5235. SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
  5236. --------E-21251D-----------------------------
  5237. INT 21 - Phar Lap 386/DOS-Extender VMM - READ PAGE-TABLE ENTRY
  5238.     AX = 251Dh
  5239.     ???
  5240. Return: ???
  5241. SeeAlso: AX=251Eh,AX=EB00h,INT 31/AX=0506h
  5242. --------E-21251E-----------------------------
  5243. INT 21 - Phar Lap 386/DOS-Extender VMM - WRITE PAGE-TABLE ENTRY
  5244.     AX = 251Eh
  5245.     ???
  5246. Return: ???
  5247. SeeAlso: AX=251Dh,INT 31/AX=0507h
  5248. --------E-21251F-----------------------------
  5249. INT 21 - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
  5250.     AX = 251Fh
  5251.     ???
  5252. Return: ???
  5253. SeeAlso: AX=251Dh,AX=251Eh
  5254. --------E-212520-----------------------------
  5255. INT 21 - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
  5256.     AX = 2520h
  5257.     DS:EDX -> pointer to buffer at least 100 bytes in size (see below)
  5258.     BL = 0 (don't reset VM stats), 1 (reset VM stats)
  5259. Return: carry flag clear    
  5260.  
  5261. Format of VM stats buffer:
  5262. Offset    Size    Description
  5263.  00h    DWORD    VM status
  5264.         0001h VM subsystem is present
  5265.         0000h VM not present
  5266.  04h    DWORD    "nconvpg" number of conventional memory pages available
  5267.  08h    DWORD    "nbimpg" number of Compaq built-in memory pages available
  5268.  0Ch    DWORD    "nextpg" total number of extended memory pages
  5269.  10h    DWORD    "extlim" extender memory pages limit
  5270.  14h    DWORD    "aphyspg" number of physical memory pages allocated to appl
  5271.  18h    DWORD    "alockpg" number of locked pages owned by application
  5272.  1Ch    DWORD    "sysphyspg" number physical memory pages allocated to system
  5273.  20h    DWORD    "nfreepg" number of free physical pages; approx if EMS VCPI
  5274.  24h    DWORD    linear address of beginning of application address space
  5275.  28h    DWORD    linear address of end of application address space
  5276.  2Ch    DWORD    number of seconds since last time VM stats were reset
  5277.  30h    DWORD    number of page faults since last time
  5278.  34h    DWORD    number of pages written to swap file since last time
  5279.  38h    DWORD    number of reclaimed pages (page faults on swapped pages)
  5280.  3Ch    DWORD    number of virtual pages allocated to the application
  5281.  40h    DWORD    size in pages of swap file
  5282.  44h    DWORD    number of system pages allocated with EMS calls
  5283.  48h    DWORD    minimum number of conventional memory pages
  5284.  4Ch    DWORD    maximum size in bytes to which swap file can be increased
  5285.  50h    DWORD    "vmflags" bit 0 = 1 if page fault in progress
  5286.  54h 16 BYTEs    reserved for future expansion (set to zero)
  5287. --------E-212521-----------------------------
  5288. INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEMORY USAGE
  5289.     AX = 2521h
  5290.     EBX = max 4k pages of physical extended memory which program may use
  5291. Return: CF clear if successful
  5292.        EBX = maximum limit in pages
  5293.        ECX = minimum limit in pages
  5294.     CF set on error
  5295.         EAX = error code
  5296.         08h insufficient memory or -nopage switch used
  5297. SeeAlso: AX=2522h
  5298. --------E-212522-----------------------------
  5299. INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY ALTERNATE PAGE-FAULT HANDLER
  5300.     AX = 2522h
  5301.     ???
  5302. Return: ???
  5303. SeeAlso: AX=2523h
  5304. --------E-212523-----------------------------
  5305. INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY OUT-OF-SWAP-SPACE HANDLER
  5306.     AX = 2523h
  5307.     ???
  5308. Return: ???
  5309. SeeAlso: AX=2522h
  5310. --------E-212524-----------------------------
  5311. INT 21 - Phar Lap 386/DOS-Extender VMM - INSTALL PAGE-REPLACEMENT HANDLERS
  5312.     AX = 2524h
  5313.     ???
  5314. Return: ???
  5315. --------E-212525-----------------------------
  5316. INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENTIONAL MEM USAGE
  5317.     AX = 2525h
  5318.     EBX = limit in 4k pages of physical conventional memory which program 
  5319.           may use
  5320. Return: CF clear if successful
  5321.         EBX = maximum limit in pages
  5322.         ECX = minimum limit in pages
  5323.     CF set on error
  5324.         EAX = error code
  5325.         08h insufficient memory or -nopage switch used
  5326. SeeAlso: AX=2521h
  5327. --------E-212526-----------------------------
  5328. INT 21 - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
  5329.     AX = 2526h
  5330.     ???
  5331. Return: ???
  5332. --------E-21252B-----------------------------
  5333. INT 21 - FlashTek X-32VM - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
  5334.     AX = 252Bh
  5335.     BH = function
  5336.         05h lock pages
  5337.         06h unlock pages
  5338.     BL = address type
  5339.         00h linear address
  5340.         ECX = linear start address of memory region
  5341.         01h segmented address
  5342.         ES:ECX -> start of memory region
  5343.     EDX = size of memory region in bytes
  5344. Return: CF clear if successful
  5345.     CF set on error
  5346. Note:    if X-32 is not using virtual memory, this function always succeeds
  5347. --------E-212532-----------------------------
  5348. INT 21 - FlashTek X-32VM - GET EXCEPTION HANDLER VECTOR
  5349.     AX = 2532h
  5350.     CL = exception number (00h-0Fh)
  5351. Return: CF clear if successful
  5352.         ES:EBX = CS:EIP of current exception handler
  5353.     CF set on error (CL > 0Fh)
  5354. SeeAlso: AX=2533h
  5355. --------E-212533-----------------------------
  5356. INT 21 - FlashTek X-32VM - SET EXCEPTION HANDLER VECTOR
  5357.     AX = 2533h
  5358.     CL = exception number (00h-0Fh)
  5359.     DS:EDX = CS:EIP of new exception handler
  5360. Return: CF clear if successful
  5361.     CF set on error (CL > 0Fh)
  5362. SeeAlso: AX=2532h
  5363. --------E-2125C0-----------------------------
  5364. INT 21 - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
  5365.     AX = 25C0h
  5366.     BX = number of 16-byte paragraphs of MS-DOS memory requested
  5367. Return: CF clear if successful
  5368.         AX = real-mode paragraph address of memory
  5369.     CF set on error
  5370.         AX = error code
  5371.         07h MS-DOS memory control blocks destroyed
  5372.         08h insufficient memory
  5373.         BX = size in paragraphs of largest available memory block
  5374. SeeAlso: AX=25C1h,AX=25C2h
  5375. --------E-2125C1-----------------------------
  5376. INT 21 - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
  5377.     AX = 25C1h
  5378.     CX = real-mode paragraph address of memory block to free
  5379. Return: CF clear if successful
  5380.         EAX destroyed
  5381.     CF set on error
  5382.         AX = error code
  5383.         07h MS-DOS memory control blocks destroyed
  5384.         09h invalid memory block address in CX
  5385. SeeAlso: AX=25C0h,AX=25C2h
  5386. --------E-2125C2-----------------------------
  5387. INT 21 - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
  5388.     AX = 25C2h
  5389.     BX = new requested block size in paragraphs
  5390.     CX = real-mode paragraph address of memory block to modify
  5391. Return: CF clear if successful
  5392.         EAX destroyed
  5393.     CF set on error
  5394.         AX = error code
  5395.         07h MS-DOS memory control blocks destroyed
  5396.         08h insufficient memory
  5397.         09h invalid memory block address in CX
  5398.         BX = size in paragraphs of largest available memory block
  5399. SeeAlso: AX=25C0h,AX=25C1h
  5400. --------E-2125C3-----------------------------
  5401. INT 21 - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
  5402.     AX = 25C3h
  5403.     ES:EBX -> pointer to parameter block (see below)
  5404.     DS:EDX -> pointer to ASCIIZ program filename
  5405. Return: CF clear if successful
  5406.         all registers unchanged
  5407.     CF set on error
  5408.         EAX = error code
  5409.         01h function code in AL is invalid ???
  5410.         02h file not found or path invalid
  5411.         05h access denied
  5412.         08h insufficient memory to load program
  5413.         0Ah environment invalid
  5414.         0Bh invalid file format
  5415.  
  5416. Format of parameter block:
  5417. Offset    Size    Description
  5418.  00h    DWORD    32-bit offset of environment string
  5419.  04h    WORD    segment selector of environment string
  5420.  06h    DWORD    32-bit offset of command-tail string
  5421.  0Ah    WORD    segment selector of command-tail string
  5422. --------D-2126-------------------------------
  5423. INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
  5424.     AH = 26h
  5425.     DX = segment at which to create PSP (see below)
  5426. Notes:    new PSP is updated with memory size information; INTs 22h, 23h, 24h
  5427.       taken from interrupt vector table
  5428.     (DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
  5429.       copy
  5430. SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
  5431.  
  5432. Format of PSP:
  5433. Offset    Size    Description
  5434.  00h  2 BYTEs    INT 20 instruction for CP/M CALL 0 program termination
  5435.         the CDh 20h here is often used as a signature for a valid PSP
  5436.  02h    WORD    segment of first byte beyond memory allocated to program
  5437.  04h    BYTE    unused filler
  5438.  05h    BYTE    CP/M CALL 5 service request (FAR JMP to 000C0h)
  5439.         BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh point at 000BEh
  5440.  06h    WORD    CP/M compatibility--size of first segment for .COM files
  5441.  08h  2 BYTEs    remainder of FAR JMP at 05h
  5442.  0Ah    DWORD    stored INT 22 termination address
  5443.  0Eh    DWORD    stored INT 23 control-Break handler address
  5444.  12h    DWORD    DOS 1.1+ stored INT 24 critical error handler address
  5445.  16h    WORD    segment of parent PSP
  5446.  18h 20 BYTEs    DOS 2+ Job File Table, one byte per file handle, FFh = closed
  5447.  2Ch    WORD    DOS 2+ segment of environment for process
  5448.  2Eh    DWORD    DOS 2+ process's SS:SP on entry to last INT 21 call
  5449.  32h    WORD    DOS 3+ number of entries in JFT (default 20)
  5450.  34h    DWORD    DOS 3+ pointer to JFT (default PSP:0018h)
  5451.  38h    DWORD    DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
  5452.         used by SHARE in DOS 3.3
  5453.  3Ch    BYTE    apparently unused by DOS versions <= 6.00
  5454.  3Dh    BYTE    apparently used by some versions of APPEND
  5455.  3Eh    BYTE    (Novell NetWare) flag: next byte initialized if CEh
  5456.  3Fh    BYTE    (Novell Netware) Novell task number if previous byte is CEh
  5457.  40h  2 BYTEs    DOS 5+ version to return on INT 21/AH=30h
  5458.  42h    WORD    (MSWin3) selector of next PSP (PDB) in linked list
  5459.          Windows keeps a linked list of Windows programs only
  5460.  44h  4 BYTEs    unused by DOS versions <= 6.00
  5461.  48h    BYTE    (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
  5462.  49h  7 BYTEs    unused by DOS versions <= 6.00
  5463.  50h  3 BYTEs    DOS 2+ service request (INT 21/RETF instructions)
  5464.  53h  2 BYTEs    unused in DOS versions <= 6.00
  5465.  55h  7 BYTEs    unused in DOS versions <= 6.00; can be used to make first FCB
  5466.          into an extended FCB
  5467.  5Ch 16 BYTEs    first default FCB, filled in from first commandline argument
  5468.         overwrites second FCB if opened
  5469.  6Ch 16 BYTEs    second default FCB, filled in from second commandline argument
  5470.         overwrites beginning of commandline if opened
  5471.  7Ch  4 BYTEs    unused
  5472.  80h 128 BYTEs    commandline / default DTA
  5473.         command tail is BYTE for length of tail, N BYTEs for the tail,
  5474.         followed by a BYTE containing 0Dh
  5475. Notes:    in DOS v3+, the limit on simultaneously open files may be increased by
  5476.       allocating memory for a new open file table, filling it with FFh,
  5477.       copying the first 20 bytes from the default table, and adjusting the
  5478.       pointer and count at 34h and 32h.  However, DOS will only copy the
  5479.       first 20 file handles into a child PSP (including the one created on
  5480.       EXEC).
  5481.     network redirectors based on the original MS-Net implementation use
  5482.       values of 80h-FEh in the open file table to indicate remote files;
  5483.       Novell NetWare reportedly also uses values of 80h-FEh
  5484.     MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
  5485.       high; the first FCB is empty and the second contains the first
  5486.       parameter
  5487.     some DOS extenders place protected-mode values in various PSP fields
  5488.       such as the "parent" field, which can confuse PSP walkers.  Always
  5489.       check either for the CDh 20h signature or that the suspected PSP is
  5490.       at the beginning of a memory block which owns itself (the preceding
  5491.       paragraph should be a valid MCB with "owner" the same as the
  5492.       suspected PSP).
  5493.     Novell NetWare updates the fields at offsets 3Eh and 3Fh without
  5494.       checking that a legal PSP segment is current; see AH=50h for further
  5495.       discussion
  5496.  
  5497. Format of environment block:
  5498. Offset    Size    Description
  5499.  00h  N BYTEs    first environment variable, ASCIZ string of form "var=value"
  5500.       N BYTEs    second environment variable, ASCIZ string
  5501.     ...
  5502.       N BYTEs    last environment variable, ASCIZ string of form "var=value"
  5503.     BYTE    00h
  5504. ---DOS 3+---
  5505.     WORD    number of strings following environment (normally 1)
  5506.       N BYTEs    ASCIZ full pathname of program owning this environment
  5507.         other strings may follow
  5508. --------D-2127-------------------------------
  5509. INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
  5510.     AH = 27h
  5511.     CX = number of records to read
  5512.     DS:DX -> opened FCB (see AH=0Fh)
  5513. Return: AL = status
  5514.         00h successful, all records read
  5515.         01h end of file, no data read
  5516.         02h segment wrap in DTA, no data read
  5517.         03h end of file, partial read
  5518.     [DTA] = records read from file
  5519.     CX = number of records read (return AL = 00h or 03h)
  5520. Notes:    read begins at current file position as specified in FCB; the file
  5521.       position is updated after reading
  5522.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5523. SeeAlso: AH=21h,AH=28h,AH=3Fh
  5524. --------D-2128-------------------------------
  5525. INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
  5526.     AH = 28h
  5527.     CX = number of records to write
  5528.     DS:DX -> opened FCB (see AH=0Fh)
  5529.     [DTA] = records to write
  5530. Return: AL = status
  5531.         00h successful
  5532.         01h disk full or file read-only
  5533.         02h segment wrap in DTA
  5534.     CX = number of records written
  5535. Notes:    write begins at current file position as specified in FCB; the file
  5536.       position is updated after writing
  5537.     if CX = 0000h on entry, no data is written; instead the file size is
  5538.       adjusted to be the same as the file position specified by the random
  5539.       record and record size fields of the FCB
  5540.     if the data to be written is less than a disk sector, it is copied into
  5541.       a DOS disk buffer, to be written out to disk at a later time
  5542.     not supported by MS Windows 3.0 DOSX.EXE DOS extender
  5543. SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h
  5544. --------D-2129-------------------------------
  5545. INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
  5546.     AH = 29h
  5547.     AL = parsing options (see below)
  5548.     DS:SI -> filename string (both '*' and '?' wildcards OK)
  5549.     ES:DI -> buffer for unopened FCB
  5550. Return: AL = result code
  5551.         00h successful parse, no wildcards encountered
  5552.         01h successful parse, wildcards present
  5553.         FFh failed (invalid drive specifier)
  5554.     DS:SI -> first unparsed character
  5555.     ES:DI buffer filled with unopened FCB (see AH=0Fh)
  5556. Notes:    asterisks expanded to question marks in the FCB
  5557.     all processing stops when a filename terminator is encountered
  5558.     cannot be used with filespecs which include a path (DOS 2+)
  5559.     Novell NetWare monitors the result code since an 'invalid drive' may
  5560.       signal an attempt to reconnect a network drive; if there are no
  5561.       connections to the specified drive, NetWare attempts to build a
  5562.       connection and map the drive to the SYS:LOGIN directory
  5563. SeeAlso: AH=0Fh,AH=16h,AH=26h
  5564.  
  5565. Bitfields for parsing options:
  5566.  bit 0    skip leading separators
  5567.  bit 1    use existing drive number in FCB if no drive is specified, instead of
  5568.          setting field to zero
  5569.  bit 2    use existing filename in FCB if no base name is specified, instead of
  5570.          filling field with blanks
  5571.  bit 3    use existing extension in FCB if no extension is specified, instead of
  5572.          filling field with blanks
  5573.  bits 4-7 reserved (0)
  5574. --------D-212A-------------------------------
  5575. INT 21 - DOS 1+ - GET SYSTEM DATE
  5576.     AH = 2Ah
  5577. Return: CX = year (1980-2099)
  5578.     DH = month
  5579.     DL = day
  5580. ---DOS 1.10+---
  5581.     AL = day of week (00h=Sunday)
  5582. SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h,INT 1A/AH=04h,INT 2F/AX=120Dh
  5583. --------D-212B-------------------------------
  5584. INT 21 - DOS 1+ - SET SYSTEM DATE
  5585.     AH = 2Bh
  5586.     CX = year (1980-2099)
  5587.     DH = month
  5588.     DL = day
  5589. Return: AL = status
  5590.         00h successful
  5591.         FFh invalid date, system date unchanged
  5592. Note:    DOS 3.3+ also sets CMOS clock
  5593. SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
  5594. --------E-212B--CX4149-----------------------
  5595. INT 21 - AI Architects - ??? - INSTALLATION CHECK
  5596.     AH = 2Bh
  5597.     CX = 4149h ('AI')
  5598.     DX = 413Fh ('A?')
  5599. Return: AL <> FFh if installed
  5600. Note:    Borland's TKERNEL makes this call
  5601. --------c-212B--CX4358-----------------------
  5602. INT 21 - PC Tools v5.x PC-Cache - INSTALLATION CHECK
  5603.     AH = 2Bh
  5604.     CX = 4358h ('CX')
  5605. Return: AL = FFh if PC-Cache not installed
  5606.     AL = 00h if installed
  5607.         CX = 6378h ('cx')
  5608.         BX = ???
  5609.         DX = ???
  5610. SeeAlso: INT 16/AX=FFA5h/CX=1111h
  5611. --------Q-212B--CX4445-----------------------
  5612. INT 21 - DESQview - INSTALLATION CHECK
  5613.     AH = 2Bh
  5614.     CX = 4445h ('DE')
  5615.     DX = 5351h ('SQ')
  5616.     AL = subfunction (DV v2.00+)
  5617.         01h get version
  5618.         Return: BX = version (BH = major, BL = minor)
  5619.         Note: early copies of v2.00 return 0002h
  5620.         02h get shadow buffer info, and start shadowing
  5621.         Return: BH = rows in shadow buffer
  5622.             BL = columns in shadow buffer
  5623.             DX = segment of shadow buffer
  5624.         04h get shadow buffer info
  5625.         Return: BH = rows in shadow buffer
  5626.             BL = columns in shadow buffer
  5627.             DX = segment of shadow buffer
  5628.         05h stop shadowing
  5629. Return: AL = FFh if DESQview not installed
  5630. Notes:    in DESQview v1.x, there were no subfunctions; this call only identified
  5631.       whether or not DESQview was loaded.  DESQview v2.52 performs function
  5632.       01h for all subfunction requests 0Ch and higher and appears to ignore
  5633.       all lower-numbered functions not listed here.
  5634.     DESQview versions 2.5x are part of DESQview/X v1.0x.
  5635. BUG:    subfunction 05h does not appear to work correctly in DESQview 2.52
  5636. SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
  5637. --------U-212B--CX454C-----------------------
  5638. INT 21 - ELRES v1.1 - INSTALLATION CHECK
  5639.     AH = 2Bh
  5640.     CX = 454Ch ('EL')
  5641.     DX = 5253h ('RS')
  5642. Return: ES:BX -> ELRES history structure (see below)
  5643.     DX = DABEh (signature, DAve BEnnett)
  5644. Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
  5645.       Bennett which stores recent errorlevel values, allows them to be
  5646.       retrieved for use in batch files, and can place them in an
  5647.       environment variable
  5648. SeeAlso: AH=4Bh"ELRES",AH=4Dh
  5649.  
  5650. Format of ELRES history structure:
  5651. Offset    Size    Description
  5652.  00h    WORD    number of return codes which can be stored by following buffer
  5653.  02h    WORD    current position in buffer (treated as a ring)
  5654.  04h  N BYTEs    ELRES buffer
  5655. --------T-212B01CX5441-----------------------
  5656. INT 21 - TAME v2.10+ - INSTALLATION CHECK
  5657.     AX = 2B01h
  5658.     CX = 5441h ('TA')
  5659.     DX = 4D45h ('ME')
  5660. ---v2.60---
  5661.     BH = ???
  5662.         00h skip ???, else do
  5663. Return: AL = 02h if installed
  5664.     ES:DX -> data area in TAME-RES (see below)
  5665. Program: TAME is a shareware program by David G. Thomas which gives up CPU time
  5666.       to other partitions under a multitasker when the current partition's
  5667.       program incessantly polls the keyboard or system time
  5668.  
  5669. Format of TAME 2.10-2.20 data area:
  5670. Offset    Size    Description
  5671.  00h    BYTE    data structure minor version number (01h in TAME 2.20)
  5672.  01h    BYTE    data structure major version number (07h in TAME 2.20)
  5673.  02h    DWORD    number of task switches
  5674.  06h    DWORD    number of keyboard polls
  5675.  0Ah    DWORD    number of time polls
  5676.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5677.  12h    DWORD    original INT 10h
  5678.  16h    DWORD    original INT 14h
  5679.  1Ah    DWORD    original INT 15h
  5680.  1Eh    DWORD    original INT 16h
  5681.  22h    DWORD    original INT 17h
  5682.  26h    DWORD    original INT 21h
  5683.  2Ah    DWORD    original INT 28h
  5684.  2Eh    WORD    offset of TAME INT 10h handler
  5685.  30h    WORD    offset of TAME INT 14h handler
  5686.  32h    WORD    offset of TAME INT 15h handler
  5687.  34h    WORD    offset of TAME INT 16h handler
  5688.  36h    WORD    offset of TAME INT 17h handler
  5689.  38h    WORD    offset of TAME INT 21h handler
  5690.  3Ah    WORD    offset of TAME INT 28h handler
  5691.  3Ch    WORD    X in /max:X,Y or /freq:X,Y
  5692.  3Eh    WORD    Y in /max:X,Y or /freq:X,Y
  5693.  40h    WORD    number of polls remaining before next task switch
  5694.  42h    WORD    /KEYIDLE value
  5695.  44h    BYTE    interrupts already grabbed by TAME (see below)
  5696.  45h    BYTE    flags for interrupts which may be acted on (same bits as above)
  5697.  46h    BYTE    TAME enabled (01h) or disabled (00h)
  5698.  47h    BYTE    /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
  5699.  48h    BYTE    /NOTIMER (01h) or /TIMER (00h)
  5700.  49h    BYTE    window or task number for this task
  5701.  4Ah    BYTE    multitasker type (see below)
  5702.  4Bh    BYTE    type of task switching selected
  5703.         bit 0: DESQview???
  5704.         bit 1: DoubleDOS???
  5705.         bit 2: TopView???
  5706.         bit 3: KeySwitch
  5707.         bit 4: HLT instruction
  5708.  4Ch    BYTE    ???
  5709.  4Dh    BYTE    flags
  5710.         bit 1: /FREQ instead of /MAX
  5711.  4Eh    BYTE    /FG: value
  5712.  4Fh    BYTE    task switches left until next FGONLY DESQview API call
  5713.  50h    BYTE    ???
  5714.  
  5715. Bitfields for interrupts already grabbed by TAME:
  5716.  bit 0    INT 10h
  5717.  bit 1    INT 14h
  5718.  bit 2    INT 15h
  5719.  bit 3    INT 16h
  5720.  bit 4    INT 17h
  5721.  bit 5    INT 21h
  5722.  bit 6    INT 28h
  5723.  
  5724. Values for multitasker type:
  5725.  01h DESQview
  5726.  02h DoubleDOS
  5727.  03h TopView
  5728.  04h OmniView
  5729.  05h VM/386
  5730.  
  5731. Bitfields for type of task switching selected:
  5732.  bit 0    DESQview
  5733.  bit 1    DoubleDOS
  5734.  bit 2    TopView
  5735.  bit 3    OmniView
  5736.  bit 4    KeySwitch
  5737.  bit 5    HLT instruction
  5738.  
  5739. Format of TAME 2.30 data area:
  5740. Offset    Size    Description
  5741.  00h    BYTE    data structure minor version number (02h in TAME 2.30)
  5742.  01h    BYTE    data structure major version number (0Ah in TAME 2.30)
  5743.  02h    DWORD    number of task switches
  5744.  06h    DWORD    number of keyboard polls
  5745.  0Ah    DWORD    number of time polls
  5746.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5747.  12h    DWORD    time of last /CLEAR or TAME-RES load
  5748.  16h    DWORD    time yielded
  5749.  1Ah    DWORD    time spent polling
  5750.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  5751.  22h    DWORD    original INT 10h
  5752.  26h    DWORD    original INT 14h
  5753.  2Ah    DWORD    original INT 15h
  5754.  2Eh    DWORD    original INT 16h
  5755.  32h    DWORD    original INT 17h
  5756.  36h    DWORD    original INT 21h
  5757.  3Ah    DWORD    original INT 28h
  5758.  3Eh    WORD    offset of TAME INT 10h handler
  5759.  40h    WORD    offset of TAME INT 14h handler
  5760.  42h    WORD    offset of TAME INT 15h handler
  5761.  44h    WORD    offset of TAME INT 16h handler
  5762.  46h    WORD    offset of TAME INT 17h handler
  5763.  48h    WORD    offset of TAME INT 21h handler
  5764.  4Ah    WORD    offset of TAME INT 28h handler
  5765.  4Ch    WORD    X in /max:X,Y or /freq:X,Y
  5766.  4Eh    WORD    Y in /max:X,Y or /freq:X,Y
  5767.  50h    WORD    number of polls remaining before next task switch
  5768.  52h    WORD    /KEYIDLE value
  5769.  54h    WORD    /FG: value
  5770.  56h    WORD    task switches left until next FGONLY DESQview API call
  5771.  58h    WORD    multitasker version
  5772.  5Ah    WORD    virtual screen segment
  5773.  5Ch    BYTE    interrupts already grabbed by TAME (see above)
  5774.  5Dh    BYTE    flags for interrupts which may be acted on (same bits as above)
  5775.  5Eh    BYTE    window or task number for this task
  5776.  5Fh    BYTE    multitasker type (see above)
  5777.  60h    BYTE    type of task switching selected (bit flags) (see above)
  5778.  61h    BYTE    watch_DOS
  5779.  62h    BYTE    bit flags
  5780.         bit 0: TAME enabled
  5781.         bit 1: /FREQ instead of /MAX (counts in 3Ch and 3Eh per tick)
  5782.         bit 2: /TIMEPOLL
  5783.         bit 3: /KEYPOLL
  5784.         bit 4: inhibit timer
  5785.         bit 5: enable status monitoring
  5786.  63h    BYTE    old status
  5787.  64h    WORD    signature DA34h
  5788.  
  5789. Format of TAME 2.60 data area:
  5790. Offset    Size    Description
  5791.  00h    BYTE    data structure minor version number (02h in TAME 2.60)
  5792.  01h    BYTE    data structure major version number (0Bh in TAME 2.60)
  5793.  02h    DWORD    number of task switches
  5794.  06h    DWORD    number of keyboard polls
  5795.  0Ah    DWORD    number of time polls
  5796.  0Eh    DWORD    number of times DESQview told program runs only in foreground
  5797.  12h    DWORD    time of last /CLEAR or TAME-RES load
  5798.  16h    DWORD    time yielded
  5799.  1Ah    DWORD    time spent polling
  5800.  1Eh    DWORD    time spent waiting on key input with INT 16/AH=01h,11h
  5801.  22h  4 BYTEs    ???
  5802.  26h    DWORD    original INT 10h
  5803.  2Ah    DWORD    original INT 14h
  5804.  2Eh    DWORD    original INT 15h
  5805.  32h    DWORD    original INT 16h
  5806.  36h    DWORD    original INT 17h
  5807.  3Ah    DWORD    original INT 21h
  5808.  3Eh    DWORD    original INT 28h
  5809.  42h    WORD    offset of TAME INT 10h handler
  5810.  44h    WORD    offset of TAME INT 14h handler
  5811.  46h    WORD    offset of TAME INT 15h handler
  5812.  48h    WORD    offset of TAME INT 16h handler
  5813.  4Ah    WORD    offset of TAME INT 17h handler
  5814.  4Ch    WORD    offset of TAME INT 21h handler
  5815.  4Eh    WORD    offset of TAME INT 28h handler
  5816.  50h    WORD    X in /max:X,Y or /freq:X,Y
  5817.  52h    WORD    Y in /max:X,Y or /freq:X,Y
  5818.  54h    WORD    number of polls remaining before next task switch
  5819.  56h    WORD    /KEYIDLE value
  5820.  58h  4 BYTEs    ???
  5821.  5Ch    WORD    X in /boost:X,Y
  5822.  5Eh    WORD    Y in /boost:X,Y
  5823.  60h    WORD    /FG: value
  5824.  62h    WORD    task switches remaining until next FGONLY DESQview API call
  5825.  64h    WORD    multitasker version ???
  5826.  66h    WORD    virtual screen segment
  5827.  68h    BYTE    interrupts already grabbed by TAME (see above)
  5828.  69h    BYTE    flags for interrupts which may be acted on (same bits as above)
  5829.  6Ah    BYTE    window or task number for this task
  5830.  6Bh    BYTE    multitasker type (see above)
  5831.  6Ch    BYTE    type of task switching selected (bit flags) (see above)
  5832.  6Dh    BYTE    watch_DOS
  5833.  6Eh    BYTE    bit flags
  5834.         bit 0: TAME enabled
  5835.         bit 1: /FREQ instead of /MAX (counts in 50h and 52h per tick)
  5836.         bit 2: /TIMEPOLL
  5837.         bit 3: /KEYPOLL
  5838.         bit 4: inhibit timer
  5839.         bit 5: enable status monitoring
  5840.  6Fh    BYTE    old status
  5841.  70h    WORD    signature DA34h
  5842. --------R-212B44BX4D41-----------------------
  5843. INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
  5844.     AX = 2B44h ('D')
  5845.     BX = 4D41h ('MA')
  5846.     CX = 7063h ('pc')
  5847.     DX = 4157h ('AW')
  5848. Return: AX = 4F4Bh ('OK') if large host resident
  5849.        = 6F6Bh ('ok') if small host resident
  5850.     CX:DX -> API entry point
  5851. SeeAlso: INT 16/AH=79h
  5852.  
  5853. Call API entry point with:
  5854.     AX = 0000h get pcANYWHERE IV version
  5855.         DS:SI -> BYTE buffer for host type code
  5856.         Return: AH = version number
  5857.             AL = revision number
  5858.             DS:DI buffer byte filled with
  5859.             00h full-featured host
  5860.             01h limited-feature LAN host
  5861.             other API may not be supported
  5862.     AX = 0001h initialize operation
  5863.         DS:SI -> initialization request structure (see below)
  5864.         Return: AX = function status (see below)
  5865.     AX = 0002h get status
  5866.         Return: AH = current operating mode (see init req structure below)
  5867.             AL = current connection status
  5868.             bit 0: a physical connection is active
  5869.             bit 1: remove screen updating is active
  5870.             bit 2: connection checking is active
  5871.             bit 3: hot key detection is active
  5872.             bit 4: background file transfer is active
  5873.     AX = 0003h suspend remote screen updates
  5874.         Return: AX = function status (see below)
  5875.     AX = 0004h resume screen updates
  5876.         Return: AX = function status (see below)
  5877.     AX = 0005h end current remote access session
  5878.         DS:SI -> termination request structure (see below)
  5879.         Return: AX = function status (see below)
  5880.     AX = 0006h remove pcANYWHERE IV from memory
  5881.         Return: AX = status
  5882.             0000h successful
  5883.             FFD2h unable to release allocated memory
  5884.             FFD1h unable to release interrupt vectors
  5885.     AX = 8000h read data from communications channel
  5886.         DS:BX -> buffer
  5887.         CX = buffer size
  5888.         Return: AX >= number of characters read/available
  5889.             AX < 0 on error
  5890.     AX = 8001h write data to communications channel
  5891.         DS:BX -> buffer
  5892.         CX = buffer size
  5893.         Return: AX >= number of characters written
  5894.             AX < 0 on error
  5895.     AX = 8002h get connection status
  5896.         Return: AX = status
  5897.             > 0000h if connection active
  5898.             = 0000h if connection lost
  5899.             < 0000h on error
  5900.  
  5901. Format of initialization request structure:
  5902. Offset    Size    Description
  5903.  00h    BYTE    operating mode
  5904.         00h wait for a call
  5905.         01h hot key activates
  5906.         02h incoming call activates
  5907.         03h initiate a call
  5908.  01h  3 BYTEs    user ID to append to config file names
  5909.  04h    WORD    DS-relative pointer to path for config files
  5910.  06h    WORD    DS-relative pointer to path for program files
  5911.  
  5912. Format of termination request structure:
  5913. Offset    Size    Description
  5914.  00h    BYTE    operating mode after termination
  5915.         00h wait for a call
  5916.         01h hot key activates
  5917.         02h incoming call activates
  5918.         80h use current mode
  5919.         FFh remove from memory
  5920.  
  5921. Values for function status:
  5922.  0000h function completed successfully
  5923.  FFF2h unable to establish a connection when operating mode is
  5924.     "Initiate a call"
  5925.  FFF3h modem configuration is invalid (corrupt config)
  5926.  FFF4h modem initialization failed (no modem response)
  5927.  FFF5h the communications device could not be initialized
  5928.  FFF6h the host operator aborted the function
  5929.  FFF7h the communications driver type specified in the configuration file is
  5930.     different than the one loaded when pcANYWHERE IV was initially started
  5931.  FFF9h the configuration file is invalid
  5932.  FFFAh the configuration file could not be found
  5933.  FFFBh no session is active
  5934.  FFFCh a remote access session is active
  5935.  FFFDh the specified operating mode is invalid
  5936. --------D-212C-------------------------------
  5937. INT 21 - DOS 1+ - GET SYSTEM TIME
  5938.     AH = 2Ch
  5939. Return: CH = hour
  5940.     CL = minute
  5941.     DH = second
  5942.     DL = 1/100 seconds
  5943. Note:    on most systems, the resolution of the system clock is about 5/100sec,
  5944.       so returned times generally do not increment by 1
  5945.     on some systems, DL may always return 00h
  5946. SeeAlso: AH=2Ah,AH=2Dh,AH=E7h,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
  5947. SeeAlso: INT 2F/AX=120Dh
  5948. --------D-212D-------------------------------
  5949. INT 21 - DOS 1+ - SET SYSTEM TIME
  5950.     AH = 2Dh
  5951.     CH = hour
  5952.     CL = minute
  5953.     DH = second
  5954.     DL = 1/100 seconds
  5955. Return: AL = result
  5956.         00h successful
  5957.         FFh invalid time, system time unchanged
  5958. Note:    DOS 3.3+ also sets CMOS clock
  5959. SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
  5960. --------T-212D01CX7820-----------------------
  5961. INT 21 - PC-Mix - INSTALLATION CHECK
  5962.     AX = 2D01h
  5963.     CX = 7820h ('X ')
  5964.     DX = 6D69h ('MI')
  5965. Return: AL = 00h if installed
  5966. --------D-212E--DL00-------------------------
  5967. INT 21 - DOS 1+ - SET VERIFY FLAG
  5968.     AH = 2Eh
  5969.     DL = 00h (DOS 1.x/2.x only)
  5970.     AL = new state of verify flag
  5971.         00h off
  5972.         01h on
  5973. Notes:    default state at system boot is OFF
  5974.     when ON, all disk writes are verified provided the device driver
  5975.       supports read-after-write verification
  5976. SeeAlso: AH=54h
  5977. --------D-212F-------------------------------
  5978. INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
  5979.     AH = 2Fh
  5980. Return: ES:BX -> current DTA
  5981. Note:    under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
  5982. SeeAlso: AH=1Ah
  5983. --------D-2130-------------------------------
  5984. INT 21 - DOS 2+ - GET DOS VERSION
  5985.     AH = 30h
  5986. ---DOS 5+ ---
  5987.     AL = what to return in BH
  5988.         00h OEM number (as for DOS 2.0-4.0x)
  5989.         01h version flag
  5990. Return: AL = major version number (00h if DOS 1.x)
  5991.     AH = minor version number
  5992.     BL:CX = 24-bit user serial number (most versions do not use this)
  5993. ---if DOS <5 or AL=00h---
  5994.     BH = MSDOS OEM number (see below)
  5995. ---if DOS 5+ and AL=01h---
  5996.     BH = version flag
  5997.         bit 3: DOS is in ROM
  5998.         other: reserved (0)
  5999. Notes:    the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
  6000.     the OS/2 v2.x Compatibility Box returns major version 14h (20)
  6001.     the Windows/NT DOS box returns version 5.00, subject to SETVER
  6002.     DOS 4.01 and 4.02 identify themselves as version 4.00; use
  6003.       INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
  6004.       and the later PC-DOS 4.0x and MS-DOS 4.0x
  6005.     generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
  6006.       as PC-DOS by returning OEM number 00h
  6007.     the version returned under DOS 4.0x may be modified by entries in
  6008.       the special program list (see AH=52h)
  6009.     the version returned under DOS 5+ may be modified by SETVER; use
  6010.       AX=3306h to get the true version number
  6011. SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
  6012. SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=E002h
  6013.  
  6014. Values for MSDOS OEM number:
  6015.  00h    IBM
  6016.  01h    Compaq
  6017.  02h    MS Packaged Product
  6018.  04h    AT&T
  6019.  05h    Zenith
  6020.  06h    Hewlett-Packard
  6021.  16h    DEC
  6022.  23h    Olivetti
  6023.  29h    Toshiba
  6024.  33h    Novell (Windows/386 device IDs only)
  6025.  34h    MS Multimedia Systems (Windows/386 device IDs only)
  6026.  35h    MS Multimedia Systems (Windows/386 device IDs only)
  6027.  4Dh    Hewlett-Packard
  6028.  99h    STARLITE architecture (OEM DOS, NETWORK DOS, SMP DOS)
  6029.  FFh    Microsoft, Phoenix
  6030. --------E-2130-------------------------------
  6031. INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
  6032.     AH = 30h
  6033.     EAX = 00003000h
  6034.     EBX = 50484152h ("PHAR")
  6035. Return: AL = major DOS version
  6036.     AH = minor DOS version
  6037.     EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
  6038.         BL = ASCII major version number
  6039.     EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
  6040.         EDX = address of GDA
  6041. SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
  6042. --------v-2130--DXABCD-----------------------
  6043. INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
  6044.     AH = 30h
  6045.     DX = ABCDh
  6046. Return: DX = DCBAh if installed
  6047. SeeAlso: AX=0D20h,AX=30F1h
  6048. --------T-213000BX1234-----------------------
  6049. INT 21 - CTask 2.0+ - INSTALLATION CHECK
  6050.     AX = 3000h
  6051.     BX = 1234h
  6052.     DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
  6053. Return: AL = DOS major version
  6054.     AH = DOS minor version
  6055.     CX:BX -> Ctask global data block
  6056. Program: CTask is a multitasking kernel for C written by Thomas Wagner
  6057. Note:    if first eight bytes of returned data block equal eight bytes passed
  6058.       in, CTask is resident
  6059. --------O-213000BX3000-----------------------
  6060. INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
  6061.     AX = 3000h
  6062.     BX = 3000h
  6063.     CX = DX = 3000h
  6064. Return: AX = PC-MOS version
  6065. Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
  6066.       system by Software Links, Inc.
  6067. SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
  6068. --------v-2130F1-----------------------------
  6069. INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
  6070.     AX = 30F1h
  6071. Return: AL = 00h if resident
  6072. SeeAlso: AH=30h/DX=ABCDh,AX=330Fh
  6073. ----------2130FFCX4445-----------------------
  6074. INT 21 - DESQ??? - INSTALLATION CHECK
  6075.     AX = 30FFh
  6076.     CX = 4445h ("DE")
  6077.     DX = 5351h ("SQ")
  6078. Return: BH = 05h if installed
  6079.     ???
  6080. Note:    called by DUBLDISK.COM v2.6; this function is not supported by
  6081.       DESQview, so it may be for DESQview's precursor DESQ.
  6082. SeeAlso: AX=4404h"DUBLDISK"
  6083. --------D-2131-------------------------------
  6084. INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
  6085.     AH = 31h
  6086.     AL = return code
  6087.     DX = number of paragraphs to keep resident
  6088. Return: never
  6089. Notes:    the value in DX only affects the memory block containing the PSP;
  6090.       additional memory allocated via AH=48h is not affected
  6091.     the minimum number of paragraphs which will remain resident is 11h
  6092.       for DOS 2.x and 06h for DOS 3+
  6093.     most TSRs can save some memory by releasing their environment block
  6094.       before terminating (see AH=26h,AH=49h)
  6095. SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
  6096. --------D-2132-------------------------------
  6097. INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
  6098.     AH = 32h
  6099.     DL = drive number (00h = default, 01h = A:, etc)
  6100. Return: AL = status
  6101.         00h successful
  6102.         DS:BX -> Drive Parameter Block (DPB) for specified drive
  6103.         FFh invalid or network drive
  6104. Notes:    the OS/2 compatibility box supports the DOS 3.3 version of this call
  6105.       except for the DWORD at offset 12h
  6106.     this call updates the DPB by reading the disk; the DPB may be accessed
  6107.       via the DOS list of lists (see AH=52h) if disk access is not
  6108.       desirable.
  6109.     undocumented prior to the release of DOS 5.0; only the DOS 4+ version
  6110.       of the DPB has been documented, however
  6111.     supported by DR-DOS 3.41+; DR-DOS 3.41-6.0 return the same data as
  6112.       MS-DOS 3.31
  6113. SeeAlso: AH=1Fh,AH=52h
  6114.  
  6115. Format of DOS Drive Parameter Block:
  6116. Offset    Size    Description
  6117.  00h    BYTE    drive number (00h = A:, 01h = B:, etc)
  6118.  01h    BYTE    unit number within device driver
  6119.  02h    WORD    bytes per sector
  6120.  04h    BYTE    highest sector number within a cluster
  6121.  05h    BYTE    shift count to convert clusters into sectors
  6122.  06h    WORD    number of reserved sectors at beginning of drive
  6123.  08h    BYTE    number of FATs
  6124.  09h    WORD    number of root directory entries
  6125.  0Bh    WORD    number of first sector containing user data
  6126.  0Dh    WORD    highest cluster number (number of data clusters + 1)
  6127.         16-bit FAT if greater than 0FF6h, else 12-bit FAT
  6128.  0Fh    BYTE    number of sectors per FAT
  6129.  10h    WORD    sector number of first directory sector
  6130.  12h    DWORD    address of device driver header
  6131.  16h    BYTE    media ID byte
  6132.  17h    BYTE    00h if disk accessed, FFh if not
  6133.  18h    DWORD    pointer to next DPB
  6134. ---DOS 2.x---
  6135.  1Ch    WORD    cluster containing start of current directory, 0000h=root,
  6136.         FFFFh = unknown
  6137.  1Eh 64 BYTEs    ASCIZ pathname of current directory for drive
  6138. ---DOS 3.x---
  6139.  1Ch    WORD    cluster at which to start search for free space when writing
  6140.  1Eh    WORD    number of free clusters on drive, FFFFh = unknown
  6141. ---DOS 4.0-6.0---
  6142.  0Fh    WORD    number of sectors per FAT
  6143.  11h    WORD    sector number of first directory sector
  6144.  13h    DWORD    address of device driver header
  6145.  17h    BYTE    media ID byte
  6146.  18h    BYTE    00h if disk accessed, FFh if not
  6147.  19h    DWORD    pointer to next DPB
  6148.  1Dh    WORD    cluster at which to start search for free space when writing,
  6149.         usually the last cluster allocated
  6150.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  6151. --------D-2133-------------------------------
  6152. INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
  6153.     AH = 33h
  6154.     AL = subfunction
  6155.         00h get current extended break state
  6156.         Return: DL = current state, 00h = off, 01h = on
  6157.         01h set state of extended ^C/^Break checking
  6158.         DL = 00h off, check only on character I/O functions
  6159.              01h on, check on all DOS functions
  6160. Note:    under DOS 3.1+ and DR-DOS, this function does not use any of the
  6161.       DOS-internal and may thus be called at any time
  6162. SeeAlso: AX=3302h
  6163. --------D-213302-----------------------------
  6164. INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
  6165.     AX = 3302h
  6166.     DL = new state
  6167.          00h for OFF or 01h for ON
  6168. Return: DL = old state of extended BREAK checking
  6169. Notes:    this function does not use any of the DOS-internal stacks and may thus
  6170.       be called at any time; one possible use is modifying Control-Break
  6171.       checking from within an interrupt handler or TSR
  6172.     not supported by DR-DOS through at least version 6.0
  6173. SeeAlso: AH=33h
  6174. --------D-213305-----------------------------
  6175. INT 21 - DOS 4+ - GET BOOT DRIVE
  6176.     AX = 3305h
  6177. Return: DL = boot drive (1=A:,...)
  6178. Notes:    fully reentrant
  6179.     NEC 9800-series PCs always call the boot drive A: and assign the other
  6180.       drive letters sequentially to the other drives in the system
  6181. --------D-213306-----------------------------
  6182. INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
  6183.     AX = 3306h
  6184. Return:    BL = major version
  6185.     BH = minor version
  6186.     DL = revision (bits 2-0, all others 0)
  6187.     DH = version flags
  6188.         bit 3: DOS is in ROM
  6189.         bit 4: DOS in in HMA
  6190. Notes:    this function always returns the true version number, unlike AH=30h,
  6191.       whose return value may be changed with SETVER
  6192.     because of the conflict from the CBIS PowerLAN redirector (see next
  6193.       entry), programs should check whether BH is less than 100 (64h)
  6194.       and BL is at least 5 before accepting the returned BX as the true
  6195.       version number; however, even this is not entirely reliable when
  6196.       that redirector is loaded
  6197.     fully reentrant
  6198.     OS/2 v2.1 will return BX=0A14h (version 20.10)
  6199.     the Windows NT DOS box returns BX=3205h (version 5.50)
  6200. BUG:    DR-DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
  6201.       subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
  6202.       for invalid subfunctions
  6203. SeeAlso: AH=30h,INT 2F/AX=122Fh
  6204. --------N-213306-----------------------------
  6205. INT 21 - CBIS POWERLAN - NETWORK REDIRECTOR - ???
  6206.     AX = 3306h
  6207. Return: AX = 3306h
  6208.     BL = ??? (usually 00h)
  6209.     BH = ??? (usually 00h or FFh)
  6210. Note:    unknown function, is in conflict with DOS 5+ version call
  6211. SeeAlso: AX=3306h"DOS"
  6212. --------v-21330F-----------------------------
  6213. INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
  6214.     AX = 330Fh
  6215. Return: AL = 0Fh if resident (DOS returns AL=FFh)
  6216. SeeAlso: AX=30F1h,AX=33E0h
  6217. --------v-2133E0-----------------------------
  6218. INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
  6219.     AX = 33E0h
  6220. Return: AL = E0h if resident (DOS returns AL=FFh)
  6221. SeeAlso: AX=330Fh,AX=357Fh
  6222. --------D-2134-------------------------------
  6223. INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
  6224.     AH = 34h
  6225. Return: ES:BX -> one-byte InDOS flag
  6226. Notes:    the value of InDOS is incremented whenever an INT 21 function begins
  6227.       and decremented whenever one completes
  6228.     during an INT 28 call, it is safe to call some INT 21 functions even
  6229.       though InDOS may be 01h instead of zero
  6230.     InDOS alone is not sufficient for determining when it is safe to
  6231.       enter DOS, as the critical error handling decrements InDOS and
  6232.       increments the critical error flag for the duration of the critical
  6233.       error.  Thus, it is possible for InDOS to be zero even if DOS is
  6234.       busy.
  6235.     the critical error flag is the byte immediately following InDOS in
  6236.       DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ and
  6237.       DR-DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
  6238.       is located 1AAh bytes BEFORE the critical section flag)
  6239.     For DOS 3.1+, an undocumented call exists to get the address of the
  6240.       critical error flag (see AX=5D06h)
  6241.     this function was undocumented prior to the release of DOS 5.0.
  6242. SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
  6243. --------D-2135-------------------------------
  6244. INT 21 - DOS 2+ - GET INTERRUPT VECTOR
  6245.     AH = 35h
  6246.     AL = interrupt number
  6247. Return: ES:BX -> current interrupt handler
  6248. Note:    under DR-DOS 5.0+, this function does not use any of the DOS-internal
  6249.       stacks and may thus be called at any time
  6250. SeeAlso: AH=25h,AX=2503h
  6251. --------E-213501-----------------------------
  6252. INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
  6253.     AX = 3501h
  6254. Return: CF clear if successful
  6255.         BX = new selector
  6256.     CF set on error (no more selectors available)
  6257. Note:    the new selector will be an expand-up read/write data selector with
  6258.       undefined base and limit
  6259. SeeAlso: AX=3502h,INT 31/AX=0000h
  6260. --------E-213502-----------------------------
  6261. INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
  6262.     AX = 3502h
  6263.     BX = selector
  6264. Return: CF clear if successful
  6265.     CF set on error (invalid selector)
  6266. Note:    only selectors allocated via AX=3501h should be deallocated
  6267. SeeAlso: AX=3501h,INT 31/AX=0001h
  6268. --------E-213503-----------------------------
  6269. INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
  6270.     AX = 3503h
  6271.     BX = selector
  6272.     ECX = base address
  6273. Return: CF clear if successful
  6274.     CF set on error (invalid selector)
  6275. SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
  6276. --------E-213504-----------------------------
  6277. INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
  6278.     AX = 3504h
  6279.     BX = selector
  6280. Return: CF clear if successful
  6281.         ECX = absolute base address of selector
  6282.     CF set on error (invalid selector)
  6283. SeeAlso: AX=3503h,INT 31/AX=0006h
  6284. --------E-213505-----------------------------
  6285. INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
  6286.     AX = 3505h
  6287.     BX = selector
  6288.     ECX = desired limit
  6289. Return: CF clear if successful
  6290.         ECX = actual limit set
  6291.     CF set on error (no more selectors available)
  6292. Note:    the limit will be rounded down to nearest 4K boundary if the requested
  6293.       limit is greater than 1MB
  6294. SeeAlso: AX=3503h,INT 31/AX=0008h
  6295. --------E-21350A-----------------------------
  6296. INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
  6297.     AX = 350Ah
  6298.     EBX = absolute physical address
  6299.     ECX = size in bytes of area to map
  6300. Return: CF clear if successful
  6301.     CF set on error (insufficient memory or service refused by DPMI host)
  6302. Notes:    should not make repeated calls for the same physical address
  6303.     there is no provision for unmapping memory
  6304. --------E-21350B-----------------------------
  6305. INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
  6306.     AX = 350Bh
  6307.     DS = default selector for DS
  6308. Return: CF clear
  6309.     EAX = maximum amount of memory which can be allocated via AX=350Ch
  6310. SeeAlso: AX=350Ch
  6311. --------E-21350C-----------------------------
  6312. INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
  6313.     AX = 350Ch
  6314.     ECX = size of block in bytes
  6315.     DS = default DS
  6316. Return: CF clear if successful
  6317.         EAX = near pointer to new block
  6318.         EDX = new lowest legal value for stack
  6319.     CF set on error (requested size not multiple of 4K)
  6320. SeeAlso: AX=350Bh,AX=350Dh
  6321. --------E-21350D-----------------------------
  6322. INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
  6323.     AX = 350Dh
  6324.     EBX = current ESP value
  6325.     ECX = size of block in bytes
  6326.     DS = default DS
  6327. Return: CF clear if successful
  6328.         EBX = new value for ESP
  6329.         EDX = suggested new limit for SS
  6330.     CF set on error
  6331. Note:    this function should only be called once during initialization
  6332. SeeAlso: AX=350Bh,AX=350Ch
  6333. --------v-21357F-----------------------------
  6334. INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
  6335.     AX = 357Fh
  6336. Return: DX = FFFFh if installed
  6337. SeeAlso: AX=33E0h,AX=3DFFh
  6338. ---------------------------------------------
  6339.